Qt QTableView - выравнивание флажка при использовании IsUserCheckable - PullRequest
8 голосов
/ 10 декабря 2010

Я использую флаг-флажок QTableView Qt :: ItemIsUserCheckable для отображения флажка в ячейке таблицы.

После прочтения некоторых моментов выравнивания в попытке центрировать флажок внутри ячейки я возвращаю Qt :: AlignCenter как TextAlignmentRole из функции data () models.

QVariant ExampleModel::data(const QModelIndex &index, int role) const 
{
  if(!index.isValid())
     return QVariant();

  if (role == Qt::TextAlignmentRole) 
       return Qt::AlignCenter | Qt::AlignVCenter;
}

Это, однако, не выравнивает мой флажок.

Кто-нибудь знает, как настроить флажки в этом режиме?

Ответы [ 4 ]

4 голосов
/ 13 декабря 2010

После дальнейшего изучения параметров делегатов я нашел хорошую ссылку (к сожалению, больше недоступен) и придумал следующий гибрид, используя QItemDelegate и IsUserCheckable.

По сути, вам нужно расширить QItemDelegate и переопределить, используя функцию drawCheck для центрирования и используйте editorEvent для обработки событий мыши и клавиатуры при настройке модели в соответствующем состоянии.

void drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const

и

bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index)

Также смотрите этот похожий вопрос здесь ...

2 голосов
/ 10 декабря 2010

TextAlignmentRole действительно означает, что он говорит.К сожалению, как вы, наверное, заметили, похоже, что роль выравнивания Icon / Widget вообще не доступна.

Отчет об ошибке: http://bugreports.qt -project.org / browse / QTBUG-9047

Тот же вопрос с некоторыми ответами: http://lists.trolltech.com/qt-interest/2006-06/msg00476.html

2 голосов
/ 10 декабря 2010

Возможно, это не тот ответ, который вы ищете, однако я обнаружил, что гораздо проще реализовать свой собственный делегат элемента флажка при использовании qtableviews.

1 голос
/ 10 марта 2011

Также вы можете посмотреть эту тему: http://www.qtcentre.org/threads/19157-QTableView-checkbox-center-with-stylesheet?p=181413#post181413

...