【发布时间】:2014-07-08 03:18:04
【问题描述】:
我创建了一个名为“test.db”的 SQLite 数据库。它只有一个名为“table1”的表,它不是一个空表。 我试图在 QTableView 小部件中显示“table1”,但小部件什么也没显示。 数据库已连接,Qt Createor 未检测到任何错误。我不明白为什么 QTableView 什么都没有显示。
我的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCore>
#include <QSqlDatabase>
#include <QSqlTableModel>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase test = QSqlDatabase::addDatabase("QSQLITE");
test.setDatabaseName("test.db");
if (test.open())
{
ui->DB_Status->setText("DB is connected.");
}
else
{
ui->DB_Status->setText("DB is not connected.");
}
QSqlTableModel *model = new QSqlTableModel(this,test);
model->setTable("table1");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("Row1"));
model->setHeaderData(1, Qt::Horizontal, tr("Row2"));
ui->tableView->setModel(model);
ui->tableView->show();
}
我可以运行程序,但 QTableView 小部件不显示任何内容。问题出在哪里?
【问题讨论】:
-
您可以查看返回
QString selectStatement()的内容并手动使用(执行)并查看结果。最可能的情况是您正在查询您认为有数据但实际上没有的表(或数据库)。