C++ 如何填充数据库sqlite tablewidget
我正在编写“SQLite”数据库,并创建如下数据库表: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
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新手。您能解释更多吗?