我想在委托内绘制一个 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),但我无法弄清楚这两个类如何一起发挥作用。
除了复杂的控件之外,似乎还需要强制 Qt 绘制组合框标签。尝试这个:
QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &comboBoxOption, painter)
如果我正确阅读文档和源代码,可能会强制 QStyle 绘制组合框标签。必须指定两者似乎很奇怪......但说实话,我不太了解 Qt 样式如何绘制自己。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)