У меня есть пользовательская QTableView
модель с пользовательским QHeaderView
для отображения флажка, используемого для выполнения функции «выбрать все» для содержимого таблицы.
В моем заголовке перегружен paintSection()
функция, я успешно отображаю флажок, используемый для выбора всех с:
QStyleOptionButton option;
option.rect = QRect(3,10,16,16);
option.state = QStyle::State_Enabled | QStyle::State_Active;
if (isChecked_)
option.state |= QStyle::State_On;
else
option.state |= QStyle::State_Off;
style()->drawPrimitive(QStyle::PE_IndicatorCheckBox, &option, painter);
К сожалению, флажок не отображается по центру, а вместо этого выравнивается по левому краю.Это полностью противоречит правильно центрированным QStyledItemDelegate
флажкам в столбце для каждой записи таблицы.
Я знаю, что могу изменить первые два аргумента QRect
, чтобы изменить происхождение нарисованного примитива, но этоне реагирует на изменения ширины столбца.Хотя фиксированная ширина столбца не является худшим решением.
Как правильно расположить флажок в заголовке столбца?
Вспомогательный вопрос: флажок в заголовке может бытьпереключается нажатием в любом месте в ячейке, а не только на самом поле (в отличие от тех, которые отображаются в таблице через делегатов).Есть ли способ это исправить?