3

我正在编写一个 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 中实现这一点的任何想法???

查询的输出将是一条记录。例如世界最高山峰的名称,或英格兰首都的名称。只是单曲记录。

4

2 回答 2

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());
于 2014-12-23T06:14:47.203 回答
3

如果你想使用QSqlQueryModel这个,你可以使用QSqlQueryModel::record ( int row )来检索特定的记录,然后QSqlRecord::value ( int index )获取一个字段的值:

QString str = model1->record(0).value(0).toString();
label->setText(str);
于 2014-12-23T06:21:12.840 回答