Производный класс QWidget не виден - PullRequest
6 голосов
/ 23 ноября 2011

Я могу создать и увидеть 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 Ответ

4 голосов
/ 24 ноября 2011

Вы можете переписать 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);
}

Я думаю, что это решит проблему.

...