crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Гость_DaniMinch_*
сообщение 23.2.2014, 10:40
Сообщение #1





Гости








    


Всем привет. Необходимо сделать программу, в ходе которой данные из разных таблиц одной БД раскидываются по вкладкам 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;
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.4.2025, 14:43