0

我正在开发一个应用程序,该应用程序具有一个视图,该视图生成一个报告以显示给用户。这份报告是我需要过滤的东西。使用 Qt 中的 SQL 支持我尝试使用具有过滤功能的 QSqlTableModel,但它似乎没有找到视图,因为我收到错误“无法找到表 TABLE_NAME”。如何在 Qt 中为视图建模?我无法找到任何具体的信息。

QSqlDatabase connection(Request_Connection("DB Name"));
QSqlTableModel* pStore(new QSqlTableModel(NULL, connection));

if (connect(connection))
    pStore->setTable("ViewName");
4

2 回答 2

0

如果您遇到错误“无法找到表 TABLE_NAME”,这仅表示您正在尝试从不存在的表中获取数据。检查您的数据库。

编辑

好吧,你所做的很奇怪。它应该更像这样:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("customdb");
db.setUserName("root");
db.setPassword("root");
if(!db.open())
    QMessageBox::information(this, "Error", "Couldn't open database!");

那是开放数据库。在第一个引号中,您有一个您使用的 sql 名称。在这里您可以找到所有可用的 sql 插件。当您连接到数据库时,您可以读取一些数据。如果你想为此使用 QSqlTableModel,你可以这样做:

QSqlTableModel *model = new QSqlTableModel(parentObject, db);
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;
view->setModel(model);
view->hideColumn(0); // don't show the ID
view->show();

这个简单的例子将从'employee'表中加载'Name'和'Salary'列,并将其显示在'view' QTableView中。这就是你应该这样做的方式。

于 2012-07-17T18:25:44.680 回答
0

我的建议:

  1. 检查您的数据库名称。
  2. 我发现这个网站有助于更好地理解 QSqlTableModel http://harmattan-dev.nokia.com/docs/library/html/qt4/qsqltablemodel.html
于 2013-08-10T01:12:56.527 回答