【问题标题】:How to fill database sqlite tablewidget如何填充数据库sqlite tablewidget
【发布时间】:2016-01-05 08:36:09
【问题描述】:

我正在编写“SQLite”数据库,并创建这样的数据库表:

void MainWindow::createdata()
{
    QSqlQuery query;
    query.exec("DROP TABLE messages");
    query.exec("CREATE TABLE messages("
               "id INTEGER PRIMARY KEY AUTOINCREMENT,"
               "IPAddress VARCHAR(20),"
               "date VARCHAR(10),"
               "message VARCHAR(30))");

    query.prepare("INSERT INTO messages(IPAddress, date, message) values(?,?,?)");
    query.addBindValue("192.168.1.1");
    query.addBindValue("jun 3 2016");
    query.addBindValue("hello");

    if (query.exec()) {
        qDebug() << "ok!";
    }
    else
    {
      qDebug() << query.executedQuery();
      qDebug() << query.lastError();
    }
 }

我像这样创建“qtablewidget”:

 QTableWidget* table = new QTableWidget();

 table->setRowCount(10);
 table->setColumnCount(4);
 table->setWindowTitle("Received Message");
 table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  table->setHorizontalHeaderLabels(QString("ID;HostAddress;Date;Message").split(";"));
 table->setStyleSheet("QTableView {selection-background-color: blue;}");
 table->setEditTriggers(QAbstractItemView::NoEditTriggers);
 table->setSelectionBehavior(QAbstractItemView::SelectRows);
 table->setSelectionMode(QAbstractItemView::SingleSelection);


 QSqlQuery query("SELECT * FROM messages");

但我不知道我应该如何填写“tablewidget”以显示查询。 谁能帮帮我?谢谢

【问题讨论】:

  • 一般来说,在 Qt 中显示数据库数据的最简单方法是通过模型在这种情况下为 QSqlQueryModel,这里是一个示例:qtforum.org/article/29669/…
  • @Marco: 我应该用tablewidget:(

标签: c++ qt sqlite


【解决方案1】:

您应该使用QTableView(基于模型的表格视图版本),然后使用QSqlQueryModel,您可以填充您的表格。

QSqlQueryModel *model = new QSqlQueryModel();
model->setQuery(query);
tableView->setModel(model);

要将QSqlQueryModelQTableWidget 一起使用,您应该逐行遍历QSqlQueryModel 并将它们添加到您的QTableWidget

QSqlQueryModel *model = new QSqlQueryModel();
model->setQuery(query);

int i;
QSqlRecord row
for(i = 0, row = model->record(i); !row.isEmpty(); i++, row = model->record(i)){
    // Get each field using `value` method of variabale 'row'
    // and insert this fields to its corresponding cell in QTableWidget
}

相关问题:

Setting the model to a QTableWidget

【讨论】:

  • @Frogatto :但我应该使用 QTableWidget
  • @Hanita 为什么要使用QTableWidget
  • 因为我的老板这么说 :D :(
  • @Hanita 在这种情况下,您应该逐行遍历QSqlQueryModel,并将它们添加到QTableWidget
  • 对不起,我是 qt 的新手..你能解释更多吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
相关资源
最近更新 更多