使用QT制作了一个小程序,程序界面分为多个QWidget和多个QDialog,整体使用qss设置的时候发现,除主界面之外的QWidget样式丢失。查找网上方案,根据下文所示,尽量用QWidget的子类做样式,否则需要重写QWidget的paintEvent事件。
//重写paintEvent
void funcAllocEvalateForm::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QStyleOption styleOpt;
styleOpt.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &styleOpt, &painter, this);
}
https://blog.csdn.net/qq_37354286/article/details/79845547
在对应的类中重写了该方法,仍然没有对应的样式。需要进一步在qss文件中针对该widget别名添加样式
QWidget#mainWidget{
border-image: url(:/skin/rec/center_content_bk.png);
}
QWidget#newSence{
border-image: url(:/skin/rec/center_content_bk.png);
}
QWidget#funcAllocEvalateForm{
border-image: url(:/skin/rec/center_content_bk.png);
}
QWidget{
background-color: transparent;
color: #FFFFFF;
font-size: 12pt;
}
添加别名样式后,生效,效果如下所示: