如何在QTableView小部件中显示SQLite数据库中的表?

时间:2014-05-20 02:20:36

标签: c++ qt sqlite qt5

我创建了一个名为" test.db"的SQLite数据库。它只有一个名为" table1"这不是一张空桌子。 我试图显示" table1"在QTableView小部件中但小部件什么都没显示。 数据库已连接,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小部件diaplay什么都没有。问题在哪里?

1 个答案:

答案 0 :(得分:0)

test.setDatabaseName("test.db"); // after this line open database connection.
test.open();