【问题标题】:Showing output of sql query inside a QLabel在 QLabel 中显示 sql 查询的输出
【发布时间】:2014-12-23 05:56:26
【问题描述】:

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

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

【问题讨论】:

    标签: c++ qt qt4 qsqlquery qsqldatabase


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以使用 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());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        相关资源
        最近更新 更多