gpt4 book ai didi

c++ - 如何为子类 QComboBox 编写 paintEvent()

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:59 26 4
gpt4 key购买 nike

我将 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?另外,是否有关于不同 Qt 控件的 paintEvent 的文档?

最佳答案

我认为您的问题是您重写了基类方法,而没有先在派生类中调用它。您应该在派生类方法中调用它

关于c++ - 如何为子类 QComboBox 编写 paintEvent(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com