Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Правильное описание модели данных
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
NetWorm
Доброго всем времени суток! В Qt совершенно новичок, только учусь... В общем есть вопрос такой.. Как правильно и грамотно описывать модель данных. Вот пример.

        QSqlQuery query;
        query.exec("SELECT ID, UserName, RealUserName, Blocked, Deleted "
                   " FROM sys_users");
        peopleTable *userTab = new peopleTable;
        userTab->setQuery(query);
        userTab->setHeaderData(1,Qt::Horizontal,QObject::tr("Имя пользователя"));
        userTab->setHeaderData(2,Qt::Horizontal,QObject::tr("Полное имя"));
        ui->table_users->setModel(userTab);
        ui->table_users->hideColumn(3);
        ui->table_users->hideColumn(4);

        ui->table_users->horizontalHeader()->setResizeMode(QHeaderView::Stretch);


т.е. все ли верно? Или как-то это можно сделать более универсально? А то так получается нужно для каждой таблички описывать каждую колонку? т.е. делать вот это?
        userTab->setHeaderData(1,Qt::Horizontal,QObject::tr("Имя пользователя"));
        userTab->setHeaderData(2,Qt::Horizontal,QObject::tr("Полное имя"));

а потом еще и скрывать лишние
ui->table_users->hideColumn(3);
ui->table_users->hideColumn(4);


т.е. существует только такой подход или же как-то это делается более профессионально???
ViGOur
По идее только так.
NetWorm
Ну я создал наследника! В котором переопределил метод headerData(). т.е. например у меня везде в данном посреднике есть колонки "Фам.", "Имя", "Отчество".

QVariant peopleTable::headerData(int section, Qt::Orientation orientation, int role) const{
    if (role != Qt::DisplayRole)
        return QVariant();
    if (orientation == Qt::Vertical)
        return QVariant(section + 1);
    else
        switch (section) {
            case 0:
                return QVariant("Фамилия");
            case 1:
                return QVariant("Имя");
            case 2:
                return QVariant("Отчество");
}
    return QSqlQueryModel::headerData(section,orientation, role);
}


Вот переопределенный метод в наследнике. И при создании таблицы ему принудительно 3 колонки присваиваются
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.