1

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

4

1 回答 1

0

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

于 2012-10-03T09:31:01.003 回答