Qt QSqlTableModel: 多数据库数据显示指南
在 Qt 中,使用 QSqlTableModel 可以方便地将数据库数据与视图进行绑定。如果需要在一个 QSqlTableModel 中显示多个数据库的数据,可以按照以下步骤进行:
-
创建多个 QSqlDatabase 对象: 每个对象代表一个数据库连接。可以使用
QSqlDatabase::addDatabase()函数创建多个连接,并为每个连接设置对应的数据库驱动、主机名、用户名、密码等信息。 -
打开每个数据库连接: 使用
QSqlDatabase::open()函数打开连接。 -
创建多个 QSqlTableModel 对象: 每个对象代表一个数据库表格。使用
QSqlTableModel::setTable()函数设置每个表格的名称。 -
设置每个 QSqlTableModel 对象的数据库连接: 使用
QSqlTableModel::setDatabase()函数设置数据库连接。 -
调用 QSqlTableModel::select() 函数查询每个表格的数据。
-
创建一个 QStackedWidget 对象: 用于显示多个数据库表格的视图。
-
创建多个 QTableView 对象: 每个对象用于显示一个表格的数据。将每个 QSqlTableModel 对象设置为对应的 QTableView 的模型。
-
将每个 QTableView 对象添加到 QStackedWidget 中。
以下是一个示例代码:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建第一个数据库连接
QSqlDatabase db1 = QSqlDatabase::addDatabase('QMYSQL', 'connection1');
db1.setHostName('localhost');
db1.setDatabaseName('database1');
db1.setUserName('username1');
db1.setPassword('password1');
db1.open();
// 创建第二个数据库连接
QSqlDatabase db2 = QSqlDatabase::addDatabase('QMYSQL', 'connection2');
db2.setHostName('localhost');
db2.setDatabaseName('database2');
db2.setUserName('username2');
db2.setPassword('password2');
db2.open();
// 创建第一个表格的模型
QSqlTableModel model1(nullptr, db1);
model1.setTable('table1');
model1.select();
// 创建第二个表格的模型
QSqlTableModel model2(nullptr, db2);
model2.setTable('table2');
model2.select();
// 创建 QStackedWidget
QStackedWidget stackedWidget;
// 创建第一个表格的视图
QTableView tableView1;
tableView1.setModel(&model1);
stackedWidget.addWidget(&tableView1);
// 创建第二个表格的视图
QTableView tableView2;
tableView2.setModel(&model2);
stackedWidget.addWidget(&tableView2);
stackedWidget.show();
return app.exec();
}
注意: 在实际使用中,需要根据自己的情况修改数据库连接的参数、表格名称等。
原文地址: https://www.cveoy.top/t/topic/prpL 著作权归作者所有。请勿转载和采集!