我想在委托内绘制一个 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),但我不知道这两个类是如何一起玩的。