C++ 如何填充数据库sqlite tablewidget

C++ 如何填充数据库sqlite tablewidget,c++,qt,sqlite,C++,Qt,Sqlite,我正在编写“SQLite”数据库,并创建如下数据库表: void MainWindow::createdata() { QSqlQuery query; query.exec("DROP TABLE messages"); query.exec("CREATE TABLE messages(" "id INTEGER PRIMARY KEY AUTOINCREMENT," "IPAddress VARCHAR(2

我正在编写“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* 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);

要将
QSqlQueryModel
QTableWidget
一起使用,您应该逐行迭代
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
}

有关问题:


一般来说,在Qt中显示数据库数据的最简单方法是通过模型,在本例中是QSqlQueryModel,下面是一个示例:@Marco:我应该使用tablewidget:(@Frogatto:但我应该使用QTableWidget@Hanita你为什么要使用QTableWidget呢?因为我的老板说:D:(@Hanita在这种情况下,您应该逐行遍历
QSqlQueryModel
并将它们添加到
QTableWidget
。对不起,我是qt新手。您能解释更多吗?