2013-06-22 61 views
0

我有以下代碼爲我的應用程序 -如何在Qt中使用外部樣式表風格化自定義類?

文件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#titleBar{ 
    background: #ccc; 
} 

似乎樣式表並沒有對我的工作應用。它甚至不換

headerArea{ 
    background: #ccc; 
} 

工作,但是當我申請的樣式父類QDockWidget其類headerArea繼承從 -

QDockWidget{ 
    background: #ccc; 
} 

我真的很感激任何一種,它工作正常的幫助。 謝謝!

回答

0

您應該致電headerArea的基類paintEvent()headerArea::paintEvent

+0

你的意思是把 - this-> parentWidget() - > paintEvent(); 裏面headerArea :: paintEvent()函數..對吧? – Killswitch

+0

如果'headerArea'是'QDockWidget'的後代,調用'QDockWidget :: paintEvent(event)'。 –

0

我沒用過你的QDockWidget,但是,我怎麼寫的風格對我的QSS文件是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; 
} 

你可以將樣式表路徑設置爲setStyleSheet(stylesheetpath +'#butt onNameOne')。 希望這個幫助你

相關問題