0

我的应用程序有以下代码-

文件 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;
}

但是当我将样式应用于类 headerArea 继承自的父类 QDockWidget 时,它工作正常 -

QDockWidget{
    background: #ccc;
}

我真的很感激任何帮助。谢谢!

4

2 回答 2

0

我没有使用您的QDockWidget,但是我为 qss 文件编写样式的方式是,例如 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+'#buttonNameOne')。希望这对你有帮助

于 2013-08-08T17:58:27.467 回答
0

你应该headerAreapaintEvent().headerArea::paintEvent

于 2013-06-23T06:14:12.343 回答