Как написать paintEvent () для Subclassed QComboBox

Я SubClassed QComboBox для того, чтобы настроить его. Я написал следующий метод paintEvent (), чтобы проверить, правильно ли применялась моя таблица стилей, прежде чем я начал настройку. Однако, если я использую этот paintEvent, выбранный элемент не отображается (уже выбранный — или тот, который я недавно выбрал).

class MyComboBox: public QComboBox
{
Q_OBJECT
public:
MyComboBox(QWidget *parent = 0): QComboBox(parent){}

virtual void paintEvent(QPaintEvent* pEvent)
{
QStylePainter painter(this);
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
QVariant itemData = this->itemData( this->currentIndex(), Qt::DisplayRole);
if(!itemData.isNull() && qVariantCanConvert<QPen>(itemData))
style()->drawItemText(&painter,this->rect(),Qt::AlignLeft,(this->palette()), true, itemData.toString());
}
};

Как мне исправить paintEvent? Кроме того, есть ли документация по paintEvent для различных элементов управления Qt?

1

Решение

Я думаю, что ваша проблема здесь в том, что вы переопределяете метод базового класса, не вызывая его первым в своем производном классе. Вы должны вызвать его в своем методе производного класса

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]