crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Выравнивание колонок в QTableView, Выравнивание, установка цвета, шрифта, и т.п. без наследования базовог
mishabard
  опции профиля:
сообщение 11.7.2011, 13:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

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




Репутация:   0  


Здравствуйте! Собственно уточняющий вопрос.

Я могу выравнивать колонки в QTableView двумя способами:
через метод делегата в колонке:
void FuseDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    Q_ASSERT( index.isValid() );
    QVariant value;
    QStyleOptionViewItemV2 opt = setOptions(index, option);
    opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter;
QItemDelegate::paint(painter,opt,index);
}

или
через переопределения метода Data у модели:

QVariant SqlRelationalTableModel::data(const QModelIndex &idx, int role) const
{
    QVariant value = QSqlRelationalTableModel::data(idx, role);//QSqlTableModel::data(idx, role);
    QString v = QSqlRelationalTableModel::data(idx, Qt::DisplayRole).toString();

    switch (role)
    {
    case Qt::DisplayRole:
   .....
        break;
    case Qt::CheckStateRole:
        if ( idx.column() == 1 || idx.column() == 2 || idx.column() == 3 )
            return v == "T" ? Qt::Checked : Qt::Unchecked;
        break;
    
    case Qt::TextAlignmentRole:
        return [color="#FF0000"]Qt::AlignRight;[/color]
        break;
   .....

    }
    return value;
}


Но в обеих вариантах необходимо наследоваться или переопределять классы. Привязываться точно к колонкам. И в итоге они у меня заточены под поределенную задачу и я их использовать с другими таблицами могу, но надо будет сделать все более универсальней.
Вопрос:
можно ли как-то установить у колонок QTableView выравнивание , цвет, шрифт и т.п. без вышеперечисленных методов
что то типа TableView->Set.....
Чтоб без наследования и использования делегатов? Не могу найти!!!
Причина редактирования: Форматируй свои сообщения
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mishabard
  опции профиля:
сообщение 13.7.2011, 0:04
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 13.6.2011
Из: Киев
Пользователь №: 2741

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




Репутация:   0  


Неужели больше нет вариантов???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.7.2011, 7:50
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(mishabard @ 11.7.2011, 16:48) *
можно ли как-то установить у колонок QTableView выравнивание , цвет, шрифт и т.п. без вышеперечисленных методов
нет, т.к. представление отображает данные из модели с помощью делегата(ов).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 23.10.2023, 14:47
Сообщение #4





Гости








    


auto item = new QStandardItem();
item->setTextAlignment(Qt::AlignHCenter);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 2:18