Хочу написать программу на QT (скачал и компилировал QT-4.4.3) (в Linux ) для работы с базой данных firebird (FirebirdSS-2.1.1.17910-0.i686).
Попробовал троллевский пример. Программа соединяется с БД и заполняет ее. Но QTableView не отображает содержимого (хотя при использовании SQLite все ок ).
Вот код:
Исходник
#include <QtGui>
#include <QtSql>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
db.setHostName("localhost");
db.setDatabaseName("mydb");
db.setUserName("sysdba");
db.setPassword("********");
if (!db.open()) {
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return 1;
}
QSqlQuery query;
query.exec("create table person (ID INTEGER primary key, "
"firstname varchar(20), lastname varchar(20))");
query.exec("insert into person values(101, 'Danny', 'Young')");
query.exec("insert into person values(102, 'Christine', 'Holand')");
query.exec("insert into person values(103, 'Lars', 'Gordon')");
query.exec("insert into person values(104, 'Roberto', 'Robitaille')");
query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");
QSqlTableModel *model;
model = new QSqlTableModel(&app, db);
model->setTable("person");
model->select();
model->submitAll();
QTableView view;
view.setModel(model);
QHBoxLayout layout;
layout.addWidget(&view);
QWidget window;
window.setWindowTitle("Table");
window.setLayout(&layout);
window.show();
return app.exec();
}
Помогите найти решение, пожалуйста.