首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为子类化的QComboBox编写paintEvent()

如何为子类化的QComboBox编写paintEvent()
EN

Stack Overflow用户
提问于 2012-10-03 15:22:39
回答 1查看 1.5K关注 0票数 1

I SubClassed QComboBox以便对其进行自定义。在开始定制之前,我编写了以下paintEvent()方法来测试样式表是否被正确应用。但是,如果我使用此paintEvent,则不会显示所选项目(已经选择的项目或我新选择的项目)。

代码语言:javascript
复制
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?另外,paintEvent上是否有针对不同Qt控件的文档?

EN

回答 1

Stack Overflow用户

发布于 2012-10-03 17:31:01

我认为你这里的问题是你没有在你的派生类中首先调用它就覆盖了基类方法。您应该在派生类方法中调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12703679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档