2014-12-23 2 views
3

Я пишу приложение qt gui, где я планирую показать вывод sql-запроса внутри QLabel.Отображение вывода 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 ???

Результат запроса будет одной единственной записью. Например, название самой высокой горы в мире или название столицы Энгельда. Только отдельные записи.

ответ

3

Если вы хотите использовать QSqlQueryModel для этого, вы можете использовать QSqlQueryModel::record (int row) для получения конкретной записи, а затем QSqlRecord::value (int index), чтобы получить значение поля в:

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

Вы можете получить результат со значением метода. Например:

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()); 
Смежные вопросы