Здравствуйте! Нужно отрисовывать QComboBox в QTableView так что бы ячейки всегда выглядели как QComboBox, даже когда грид не находиться в режиме редактирования. Выяснил что для этого нужно переопределить метод paint у QStyledItemDelegate. Пробую переопределить его так:
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QString value = index.data().toString();
QStyleOptionComboBox comboBoxOption;
comboBoxOption.currentText = value;
comboBoxOption.rect = option.rect;
comboBoxOption.state = QStyle::State_Enabled;
QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter);
}
но ячейки получаются пустыми.
Когда переопределяю так:
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QString value = index.data().toString();
QStyleOptionComboBox comboBoxOption;
comboBoxOption.currentText = value;
comboBoxOption.rect = option.rect;
comboBoxOption.state = QStyle::State_Enabled;
QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &comboBoxOption, painter);
}
тогда отоисовывается значение в ячейке, в обычном виде, но серым цветом.
Поскажите пожалуйста как сделать отрисовку. Спасибо.