Я пишу приложение Qt GUI, где я планирую показать вывод запроса SQL внутри QLabel.
Теперь заполнение вывода внутри модели 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 ???
Результатом запроса будет одна запись. Например, название самой высокой в мире горы или название столицы Энгальда. Просто отдельные записи.
Если вы хотите использовать QSqlQueryModel
для этого вы можете использовать QSqlQueryModel::record ( int row )
извлечь конкретную запись, а затем QSqlRecord::value ( int index )
чтобы получить значение поля:
QString str = model1->record(0).value(0).toString();
label->setText(str);
Вы можете получить результат с помощью метода value. Например:
QString country;
QSqlQuery query("SELECT country FROM artist");
while (query.next()) {
country.append( query.value(0).toString() + " ");
}
label->setText(country);
Также вы можете прочитать данные из модели1. Что-то вроде:
label->setText(model1->data(model1->index(0,0),Qt::DisplayRole).toString());