2014-10-04 2 views
1

I 3 위젯 계층 가지고승격 후 QWidget이 사라지는 이유는 무엇입니까?

enter image description here

각 위젯 배경 색상이 다른 색상으로 변경되었는지를 (QSS 사용) 출력과 같아야 :

enter image description here

여기 좋았어.

custom.h :

enter image description here

enter image description here

이 내 Custom 위젯의 코드입니다 : 내가는 QWidget에서 파생 된 클래스에 widget을 촉진하지만 그렇게처럼 사라

#ifndef CUSTOM_H 
#define CUSTOM_H 

#include <QWidget> 

class Custom : public QWidget 
{ 
    Q_OBJECT 
public: 
    explicit Custom(QWidget *parent = 0); 
}; 

#endif // CUSTOM_H 

custom.cpp :

#include "custom.h" 

Custom::Custom(QWidget *parent) : 
    QWidget(parent) 
{ 
} 

왜이 이상한 일들이 일어나고 있는지, 그리고 내가 그린 위젯을 표시하기 위해 무엇을 할 수 있는지 설명 할 수 있습니까?

+0

무엇합니까 같은 QSS 모양? –

+0

'background-color : red;','background-color : green;'및'background-color : blue;'디자이너를 사용하여 각 위젯에 적용됩니다. –

답변

2

A는 얼마 전 나는 이미 직접 QWidget 서브 클래스에 대한이 같은 paintEvent를 구현해야 작업 스타일 시트를 QSS하기 위해 a similar question :

대답했다 :

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

이제 백만 달러 답변입니다 !! 하지만 이해하게 ... 왜 우리가해야합니까? 어떤 변화가 있습니까? 페인트 이벤트를 다시 구현하고 이벤트를'QWidget'으로 전달했지만 다시 그릴 생각은하지 않았습니다. 왜 우리가 그것을 다시 그려야합니까? –

+0

QWidget이 그 스타일 시트를 적용하지 않을 때 페인트 이벤트를 구현해야한다고 생각합니다. QWidget 섹션의 공식 문서 (http://qt-project.org/doc/qt-4.8/stylesheet-reference.html)에서이 기사를 읽을 수 있습니다. – hank