2013-06-22 2 views
0

나는외부 스타일 시트를 사용하여 Qt에서 사용자 정의 클래스를 스타일 화하는 방법은 무엇입니까?

headerArea#titleBar{ 
    background: #ccc; 
} 

는 스타일 시트가 작동하지 않는 것 시트 - 내 애플리케이션 -

파일 headerArea.cpp

void MainWindow::createDocks(){ 
    //TOP DOCK OR TITLEBAR 
    titleBar = new headerArea(); 
    addDockWidget(Qt::TopDockWidgetArea,titleBar); 
} 

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

과 내 스타일에 다음과 같은 코드가 내 신청. 심지어

headerArea{ 
    background: #ccc; 
} 

for- 작동하지 않습니다하지만 클래스 headerArea이

QDockWidget{ 
    background: #ccc; 
} 

내가 어떤 종류의 감사 정말 줄 단으로 상속하는 상위 클래스의 QDockWidget에 스타일을 적용 할 때 그것을 잘 작동합니다 도움. 감사합니다.

답변

0

의 기본 클래스 paintEvent()headerArea::paintEvent으로 전화해야합니다.

+0

다음을 넣으려고합니다. this-> parentWidget() -> paintEvent(); inside headerArea :: paintEvent() function .. right? – Killswitch

+0

'headerArea'가'QDockWidget'의 자손이면'QDockWidget :: paintEvent (event)'를 호출하십시오. –

0

나는 당신의 QDockWidget 사용하지만 exmpale를 들어, QToolButton

QToolButton { 
    text-transform: uppercase; 
    font-family:"Trebuchet MS", sans-serif ; 
    font-size:1.0em; 
    color:#fff; 
    border: 1px solid #000; 
    background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #565656, stop:1 #000); 

}

QToolButton:checked { 
    border: 1px outset #424242; 
    background:qlineargradient(spread:pad,x1:1,y1:1,x2:1,y2:0,stop:0 #424242, stop:1 #6e6e6e);  

}

QToolButton#buttonNameOne:disabled{ 
    background-color: #d5d5d5; 
    color: #6ba722; 
} 
어떻게 내 QSS 파일의 스타일을 작성하지 않았다

그리고 스타일 시트 경로를 setStyleSheet (stylesheetpath + '# butt onNameOne '). 호프이 도움이 되었습니까?

관련 문제