QSqlTableModel 关联数据库
时间: 2023-12-30 17:43:43 浏览: 41
QSqlTableModel是Qt中的一个模型(Model)类,用于将数据库中的数据呈现为表格模式。它可以与QTableView一起使用,以便在界面上显示和编辑数据库中的数据。
要使用QSqlTableModel,首先需要创建一个数据库连接,然后使用该连接来实例化QSqlTableModel。在实例化模型后,可以在代码中设置表名,设置需要显示的列以及过滤器等。
以下是一个简单的示例代码:
```c++
// 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("testdb");
db.setUserName("root");
db.setPassword("password");
db.open();
// 创建模型并设置表名
QSqlTableModel *model = new QSqlTableModel(this, db);
model->setTable("mytable");
// 设置需要显示的列
model->setHeaderData(0, Qt::Horizontal, tr("ID"));
model->setHeaderData(1, Qt::Horizontal, tr("Name"));
model->setHeaderData(2, Qt::Horizontal, tr("Age"));
// 设置过滤器
model->setFilter("Age > 18");
// 提交模型更改
model->submitAll();
// 在QTableView中显示模型数据
QTableView *view = new QTableView;
view->setModel(model);
view->show();
```
在这个例子中,我们首先创建了一个MySQL数据库连接,然后创建了一个QSqlTableModel对象,设置了需要显示的列和过滤器,并将该模型绑定到一个QTableView对象上。最后,我们在QTableView中显示了模型数据。
需要注意的是,QSqlTableModel是一个只读模型(read-only model),即不能对数据库进行插入、更新或删除操作。如果需要执行这些操作,可以使用QSqlRelationalTableModel或QSqlQueryModel。