2013-06-22 35 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')。 希望这个帮助你

相关问题