我在创建第一个窗口之前在应用程序级别(QApplication->setStylesheet
)上应用了非常简单的样式表,但#LeftSidebar
css规则不起作用且背景颜色不受影响。相反,#Editor
规则按预期工作。
我做错了什么? Sidebar
只是QWidget
个子类,只有一个QPushButton
。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(1200, 768);
QSplitter* splitter = new QSplitter();
splitter->setObjectName("MainSplitter");
splitter->setChildrenCollapsible(false);
Sidebar* leftSidebar = new Sidebar();
leftSidebar->setObjectName("LeftSidebar");
splitter->addWidget(leftSidebar);
QTextEdit* editor = new QTextEdit();
editor->setObjectName("Editor");
splitter->addWidget(editor);
QWidget* central = new QWidget();
QVBoxLayout* layout = new QVBoxLayout();
layout->setMargin(0);
central->setLayout(layout);
Header* header = new Header();
header->setObjectName("Header");
layout->addWidget(header);
layout->addWidget(splitter);
this->setCentralWidget(central);
}
application.css
#LeftSidebar {
background-color: rgb(0,0,0);
}
#Editor {
background-color: rgb(0,0,0);
}
答案 0 :(得分:3)
Qt Stylesheet for custom widget中有两个好的答案:
annotate
而不是QFrame
; QWidget
:如果您是
QWidget
的子类,则需要提供QWidget
您的自定义paintEvent
如下:QWidget
答案 1 :(得分:0)
您可能会忘记修剪样式表文本。如果没有,它将只读取第一行。 例如:
QTextStream in(&css_file);
QString strCss = in.readAll();
strCss.trimmed();
setStyleSheet(strCss);