如何为Subclassed QComboBox编写paintEvent()

时间:2012-10-03 07:22:39

标签: c++ qt paintevent

我SubClassed 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的文档吗?

1 个答案:

答案 0 :(得分:0)

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