QWidget派生类不可见

时间:2011-11-23 17:30:01

标签: qt derived-class qwidget

我可以在主窗口类的一个函数中创建和查看QWidget:

..
// ok
QWidget *w = new QWidget(this);
w->setGeometry(400,300,400,300);
w->setStyleSheet("background-color:white;");
w->show();
..

但是当我尝试通过创建另一个派生自QWidget的类来做类似的事情时,我看不到任何东西:

class MyWidget : public QWidget
{
        public:
        MyWidget(QWidget *sParent):QWidget(sParent)
        {
        }
};

        ..
        // nothing visible happens.
        MyWidget *w = new MyWidget(this);
        w->setGeometry(400,300,400,300);
        w->setStyleSheet("background-color:white;");
        w->show();
        ..

可能导致这种情况的原因是什么?

注意:关于此问题的所有内容:http://pastebin.com/haCHfqnu

1 个答案:

答案 0 :(得分:4)

您可以重写paintEvent。

void MyWidget::paintEvent(QPaintEvent *event)
{
    QWidget::paintEvent(event);
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

我认为这样可以解决问题。