在QLabel中显示SQL查询的输出

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中实现这个功能?

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

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());

3

如果您想使用QSqlQueryModel进行此操作,可以使用QSqlQueryModel::record ( int row )来检索特定记录,然后使用QSqlRecord::value ( int index )来获取字段的值:

QString str = model1->record(0).value(0).toString();
label->setText(str);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接