如何填充数据库sqlite表小部件

How to fill database sqlite tablewidget

本文关键字:sqlite 小部 数据库 何填充 填充      更新时间:2023-10-16

我正在编写"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"以显示查询。有人能帮我吗?感谢

您应该使用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
}

相关问题:

将模型设置为QTableWidget