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/hIlY 著作权归作者所有。请勿转载和采集!