Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Выравнивание текста по центру в QTableView


Автор: chesterfielda 21.7.2009, 11:33
Доброго времени суток!!!!
Подскажите пожалуйста, как сделать, чтобы текст в столбце таблицы был выровнен по центру....
ui.tableView->verticalHeader()->setDefaultAlignment(Qt::AlignCenter) выравнивает по центру только самый первый столбец, где нумеруются строки

Автор: SABROG 21.7.2009, 12:09
void QStandardItem::setTextAlignment ( Qt::Alignment alignment )

Я в Qt не встречал методов, которые бы влияли целиком на колонки или всю таблицу. Если кто видел - поправьте.

Цитата(chesterfielda @  21.7.2009,  11:33 Найти цитируемый пост)
ui.tableView->verticalHeader()->setDefaultAlignment(Qt::AlignCenter)

Тут скорее всего нужно использовать horizontalHeader(), но это повлияет сразу на все столбцы, а не на один конкретный.

Автор: Любитель 22.7.2009, 16:16
По-хорошему ведь используется своя модель (если используется не своя - создаём свою наследованием от той, которую используем сейчас) - соответственно достаточно в методе data вернуть для роли Qt::TextAlignmentRole нужное выравнивание. Можно это выравнивание хранить полем в модели и создать методы для доступа к нему.

Автор: asg128 4.9.2009, 22:11
Нужно вызвать следующий метод:

void QAbstractItemView::setItemDelegateForColumn ( int column, QAbstractItemDelegate * delegate )

Дополнительно придётся создать свой класс, наследующий QAbstractItemDelegate.
Самый лучший кандидат - QStyledItemDelegate, в котором достаточно переопределить
виртуальный защищённый метод void initStyleOption ( QStyleOptionViewItem * option, const QModelIndex & ) const
(нужно изменить option->displayAlignment).

Проверял на Qt 4.4.3.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)