Я хочу нарисовать 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), но я не могу понять, как эти два класса играют вместе.