我正在编写一个qt gui应用程序,我计划在QLabel中显示sql查询的输出。
现在在QTableView模型中填充输出很简单,我可以使用;
QSqlDatabase dbSqlite = QSqlDatabase::addDatabase("QSQLITE"); //these 2 lines for SQLite DB connection
dbSqlite.setDatabaseName("/home/aj/test.db");
dbSqlite.setUserName("aj");
QString MyQuerySqlite = ui->sqlite_queryEdit->text(); //take the query from a QLineEdit
dbSqlite.open(); //open db connection
QSqlQuery query(MyQuerySqlite,dbSqlite);
if(query.exec()) //populate in table
{
this->model1=new QSqlQueryModel();
model1->setQuery(MyQuerySqlite);
ui->sqlite_tableView->setModel(model1);
qDebug()<<QDateTime::currentDateTime()<<"SQLITE QUERY SUCCESS "<<dbSqlite.lastError().text();
}
关于如何在QLabel中实现这一点的任何想法???
查询的输出将是一条记录。例如,世界上最高的山峰的名称,或者Engalnd的首都的名称。只记录一次。
答案 0 :(得分:3)
您可以使用value方法获得结果。例如:
QString country;
QSqlQuery query("SELECT country FROM artist");
while (query.next()) {
country.append( query.value(0).toString() + " ");
}
label->setText(country);
您还可以从model1读取数据。类似的东西:
label->setText(model1->data(model1->index(0,0),Qt::DisplayRole).toString());
答案 1 :(得分:3)
如果您想使用QSqlQueryModel
,可以使用QSqlQueryModel::record ( int row )
检索特定记录,然后使用QSqlRecord::value ( int index )
获取字段值:
QString str = model1->record(0).value(0).toString();
label->setText(str);