Установка QStyleOptionComboBox.currentText не влияет на нарисованный виджет

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

В документации говорится что QStyleOptionComboBox.currentText содержит: «текст для текущего элемента поля со списком». но установка переменной не имеет никакого эффекта.

Это мой код:

void MyDelegate::paint(QPainter *painter,
    const QStyleOptionViewItem& option,
    const QModelIndex& index) const
{
    QStyleOptionComboBox comboBoxOption;
    comboBoxOption.rect = option.rect; 
    comboBoxOption.state = option.state;
    comboBoxOption.state |= QStyle::State_Enabled;
    comboBoxOption.editable = false;
    comboBoxOption.currentText = "CCC"; // This doesn't show up.

    QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter);
}

Глядя на qwindowsxpstyle.cpp , я не вижу, где отображается текст «настоящего» поля со списком, поскольку currentText не используется внутри метода drawComplexControl . Единственное место, где он, кажется, используется для стиля Windows XP, - это qcommonstyle.cpp (строка 2107, Qt 4.7.2), но я не могу понять, как эти два класса играют вместе.

5
задан WolfgangP 5 April 2011 в 09:07
поделиться