Хочу сделать отдельный класс для работы с базой, но у меня возникает ошибка, если я в ui->tableView->setModel(); передаю модель созданную в другом классе. Если Создаю ее в этом же классе, то все работает хорошо, но хочется весь SQL утащить в отдельный класс и сделать методы для доступа к базе.
Фрагмент установки модели:
void Settings::setModel()
{
dao = DAO();
ui->tableView->setModel(dao.getModel());
}
dao.h
class DAO
{
public:
DAO();
~DAO();
void AddToBase(QString title, QString source, QString base);
QSqlTableModel getModel();
private:
QSqlDatabase db;
QSqlTableModel *model;
};
dao.cpp
QSqlTableModel DAO::getModel()
{
if(QSqlDatabase::contains(QSqlDatabase::defaultConnection)) {
db = QSqlDatabase::database();
} else {
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("d:\\db.db3");
}
model = new QSqlTableModel();
model->setTable("databases");
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->select();
model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("Заголовок"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("Источник"));
model->setHeaderData(3, Qt::Horizontal, QObject::tr("База"));
return model;
}
Ошибки:
D:\dev\untitled1-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled1\settings.cpp:-1: In member function 'void Settings::setModel()':
D:\dev\untitled1-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\untitled1\settings.cpp:24: ошибка: no matching function for call to 'QTableView::setModel(QSqlTableModel)'
D:\dev\untitled1-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\..\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui\qtableview.h:71:
candidates are: virtual void QTableView::setModel(QAbstractItemModel*)
Я пробовал уже и QAbstractItemModel Делать и создавать модель на месте и ей присваивать возвращаемую модель. Подскажите, пожалуйста в чем ошибка, уж больно не хочется страшный копипаст делать в каждом методе.