crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Правильное описание модели данных
NetWorm
  опции профиля:
сообщение 11.5.2012, 22:22
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 2.8.2011
Пользователь №: 2784

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго всем времени суток! В 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
  опции профиля:
сообщение 14.5.2012, 10:27
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


По идее только так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NetWorm
  опции профиля:
сообщение 14.5.2012, 10:45
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 2.8.2011
Пользователь №: 2784

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

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


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




RSS Текстовая версия Сейчас: 18.4.2024, 21:59