Недавно начал изучать Qt, в частности, взаимодействие с БД. Есть такой код:
#include "myclass.h"
#include <QtGui/QApplication>
#include <QtSql>
#include <QTableView>
MyClass::MyClass(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags)
{
ui.setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("stf.db");
QSqlQueryModel* qmodel = new QSqlQueryModel;
QSqlQuery* query = new QSqlQuery;
query->prepare("SELECT * FROM table_name");//Что-то не то. Я что, sql забыл?
query->exec();
qmodel->setQuery(*query);
ui.tv1->setModel(qmodel);
QSqlTableModel* tmodel = new QSqlTableModel;
tmodel->setTable("table_name");
tmodel->select();
tmodel->setEditStrategy(QSqlTableModel::OnFieldChange);
ui.tv2->setModel(tmodel);
}
Две таблички, база, выдёргиваем из базы данные и выводим в таблички. Казалось бы, примитив. Да и кода-то кот наплакал. Однако если табличка с TableModel работает отлично, то QueryModel выдаёт гнетущую пустоту. То ли селект пустой, то ли квери не срабатывает, не могу понять. Пробовал прямым запросом, без prepare. Пробовал даже без QSqlQuery-объекта, напрямую в exec() запрос класть. Хоть бы что.
Может, кто сталкивался? Нужна помощь.