Пытаюсь написать простую программу для работы с базой данных. Проблема в том, что таблица не отображается в QTableView. Вот пример:
main.cpp
#include <QtGui>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
mainWindow *window = new mainWindow;
window->show();
return app.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QWidget>
#include "ui_mainwindow.h"
class mainWindow : public QMainWindow, public Ui::mainWindow
{
Q_OBJECT
public:
mainWindow(QWidget *parent = 0);
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include <QtGui>
#include <QtSql>
#include "mainwindow.h"
#include "adddialog.h"
#include "aboutdialog.h"
#include "connectdb.h"
mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent)
{
setupUi(this);
connectDB();
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS acc ("
"addr varchar(200), "
"log varchar(200), "
"pass varchar(200), "
"desc varchar(200))");
QSqlTableModel model;
model.setTable("acc");
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
model.setHeaderData(0, Qt::Horizontal, QObject::tr("Address"));
model.setHeaderData(1, Qt::Horizontal, QObject::tr("Login"));
model.setHeaderData(2, Qt::Horizontal, QObject::tr("Password"));
model.setHeaderData(3, Qt::Horizontal, QObject::tr("Description"));
model.select();
tableView->setModel(&model);
addDialog *add = new addDialog;
aboutDialog *about = new aboutDialog;
QObject::connect(addButton, SIGNAL(clicked()), add, SLOT(show()));
QObject::connect(aboutButton, SIGNAL(clicked()), about, SLOT(show()));
QObject::connect(exitButton, SIGNAL(clicked()), this, SLOT(close()));
}
Создается база данных sqlite
connectdb.h
#ifndef CONNECTDB_H
#define CONNECTDB_H
#include <QtSql>
#include <QMessageBox>
static bool connectDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName( "acc.sqlite");
if (!db.open()){
QMessageBox::critical(0, QObject::tr("Error"), QObject::tr("Can't open database."), QMessageBox::Cancel);
return false;
}
return true;
}
#endif // CONNECTDB_H
В ui_mainwindow.h описание mainwindow.ui, в котором создается QTableView *tableView. В результате запуска появляется пустая таблица даже без заголовков. Думаю проблема где-то здесь tableView->setModel(&model);
Подскажите как исправить, что бы все заработало. На простом примере, если все в одном файле вручную написать, а не через *.ui, то все верно отображается.