Qt - 样式表ID选择器无法正常工作

时间:2015-10-27 22:34:25

标签: qt

我在创建第一个窗口之前在应用程序级别(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);
}

2 个答案:

答案 0 :(得分:3)

Qt Stylesheet for custom widget中有两个好的答案:

  

如果您是QWidget的子类,则需要提供QWidget   您的自定义paintEvent如下:

QWidget

答案 1 :(得分:0)

您可能会忘记修剪样式表文本。如果没有,它将只读取第一行。 例如:

QTextStream in(&css_file);
QString strCss = in.readAll();
strCss.trimmed();
setStyleSheet(strCss);