如何使用样式表设置qwidget的背景颜色?

时间:2019-01-28 17:06:17

标签: pyqt5 qtstylesheets

关于Qt样式表的某些事情我似乎不太了解。我只想将小部件的背景色设置为白色。但是由于某种原因,背景颜色实际上只出现在我的小部件的子级中。

我尝试将self.setAutoFillBackground(True)添加到我的代码中,但是没有成功。

我也曾尝试从https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget选择解决方案。它有效,但前提是我没有设置样式表,底部边框是必需的。

class TopLabelNewProject(qt.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = qt.QHBoxLayout(self)
        layout.setContentsMargins(40, 0, 32, 0)
        self.setLayout(layout)
        self.setFixedHeight(80)
        self.setStyleSheet("""
            background-color: white;
            border-bottom: 1px solid %s;
            """ % colors.gray)

        self.label = qt.QLabel("Dashboard")
        self.label.setStyleSheet("""
            QLabel {
                font: medium Ubuntu;
                font-size: 20px;
                color: %s;
            }""" % colors.gray_dark)
        layout.addWidget(self.label, alignment=qt.Qt.AlignLeft)

        self.newProjectButton = Buttons.DefaultButton("New project", self)
        layout.addWidget(self.newProjectButton, alignment=qt.Qt.AlignRight)

注意:Buttons.DefaultButton只是具有自定义样式表的QPushButton。

这是我要实现的,带有标签和按钮的白色标题栏: what I want

但是只有标签带有白色背景。

what I get

2 个答案:

答案 0 :(得分:1)

尝试一下:

import sys
from PyQt5 import Qt as qt 

class TopLabelNewProject(qt.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = qt.QHBoxLayout(self)
        layout.setContentsMargins(40, 0, 32, 0)
        self.setLayout(layout)
        self.setFixedHeight(80)

        self.label = qt.QLabel("Dashboard")

        layout.addWidget(self.label, alignment=qt.Qt.AlignLeft)

#        self.newProjectButton = Buttons.DefaultButton("New project", self)
        self.newProjectButton = qt.QPushButton("New project", self)
        layout.addWidget(self.newProjectButton, alignment=qt.Qt.AlignRight)


style = '''
QWidget {
    background-color: white;
} 

QLabel {
    font: medium Ubuntu;
    font-size: 20px;
    color: #006325;     
}        

QPushButton {
    background-color: #006325;
    color: white;

    min-width:  70px;
    max-width:  70px;
    min-height: 70px;
    max-height: 70px;

    border-radius: 35px;        
    border-width: 1px;
    border-color: #ae32a0;
    border-style: solid;
}
QPushButton:hover {
    background-color: #328930;
}
QPushButton:pressed {
    background-color: #80c342;
}    

'''


if __name__ == '__main__':
    app = qt.QApplication(sys.argv)

    app.setStyleSheet(style)

    ex = TopLabelNewProject()
    ex.show()
    sys.exit(app.exec_())  

enter image description here

答案 1 :(得分:0)

首先(仅更改一个窗口小部件):在窗口小部件上单击鼠标右键,单击“更改样式表”,然后打开“样式表”窗口,当您在窗口内添加内容时,窗口小部件也将更改。 第二(更改所有选定的窗口小部件):使用属性窗口,标记要更改的所有窗口小部件,单击styleSheetrow的...。现在,当您进行更改时,styleSheet窗口将打开,您选择的所有小部件都会发生更改。

插入样式表:

QLabel <-元素名称

{...... ...} <-必须在更改周围设置大括号

background-color:黑色; <---设置Backgroundcolor

完整示例:

    QLabel{
    border-style: outset;
    border-width: 2px;
    border-color: black;
    Background-color: rgb(255,247,191);
    color: black;
    }

有关Sylesheet窗口的更多信息,请阅读https://doc.qt.io/Qt-5/stylesheet-syntax.html

友好的愿望,嗅探