Всем привет. Необходимо сделать программу, в ходе которой данные из разных таблиц одной БД раскидываются по вкладкам QTabWidget. Для этого создан класс Database в котором подключается БД MS access, и теоретически изменяется таблица в модели. Однако, методом проб и ошибок я выяснил, что представления не имею как подключить модель к Бд. Я недавно начал работать с Qt и С++, поэтому подключение конструктором представляет для меня некоторые сложности, так как все мои попытки его сформировать приводили к тьме ошибок. Код класса, main, и функции смены вкладок прилагаются.
Database.h
class Database
{
public:
Database(QString Driver, QString ConnectionString);
QSqlTableModel model;
QSqlDatabase db;
void setModelTable(QString tablename);
private:
bool setDataBase(QString Driver, QString ConnectionString);
bool connected;
};
Database.cpp
Database::Database(QString Driver, QString ConnectionString)
{
if(!setDataBase(Driver, ConnectionString))
{
}
}
bool Database::setDataBase(QString Driver, QString ConnectionString)
{
db = QSqlDatabase::addDatabase(Driver);
db.setDatabaseName(ConnectionString);
if (!db.open())
{
if (db.lastError().isValid())
qDebug() << db.lastError();
return false;
}
else
{
qDebug() << "success";
QSqlTableModel arr;
pmodel=&arr;
return true;
}
}
void Database::setModelTable(QString tablename)
{
model->setTable(tablename);
model->select();
model->setEditStrategy(QSqlTableModel::OnFieldChange);
}
Функция
void TheatreWindow::on_tabWidget_currentChanged(int index)
{
switch(index)
{
case 1:
db->setModelTable("TimeTable");
ui->tableViewShedule->setModel(&db->model);
break;
case 2:
db->setModelTable("Plays");
ui->tableViewPlays->setModel(&db->model);
break;
case 3:
db->setModelTable("Tickets");
break;
case 4:
db->setModelTable("Clients");
ui->tableViewClients->setModel(&db->model);
break;
case 5:
db->setModelTable("Halls");
ui->tableViewHalls->setModel(&db->model);
break;
case 6:
db->setModelTable("Halls");
ui->tableViewDestroy->setModel(&db->model);
break;
case 7:
db->setModelTable("Users");
ui->tableViewUsers->setModel(&db->model);
break;
case 8:
db->setModelTable("Users");
ui->tableViewUsersAdmin->setModel(&db->model);
break;
default:
qDebug() <<"Something wrong. Tab index: "<<index;
}