【问题标题】:How to display table from SQLite database in QTableView widget?如何在 QTableView 小部件中显示 SQLite 数据库中的表?
【发布时间】: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() 的内容并手动使用(执行)并查看结果。最可能的情况是您正在查询您认为有数据但实际上没有的表(或数据库)。

标签: c++ qt sqlite qt5


【解决方案1】:
test.setDatabaseName("test.db"); // after this line open database connection.
test.open();

【讨论】:

  • OP 已经这样做了,并且正在测试open 调用的结果。
  • 请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
猜你喜欢
  • 2019-04-19
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 2015-11-06
  • 2017-11-08
  • 1970-01-01
相关资源
最近更新 更多