Как установить цвет фона qwidget, используя таблицы стилей? - PullRequest
0 голосов
/ 28 января 2019

В таблицах стилей 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 голосов
/ 02 июля 2019

Сначала (измените только один виджет): щелкните правой кнопкой мыши виджета, нажмите «Изменить таблицу стилей» и откроется окно таблицы стилей, когда вы сможете что-то изменить внутри окна, виджет тоже изменится.Второй (изменить все выбранные виджеты): используйте окно свойств, отметьте все виджеты, которые вы хотите изменить, нажмите ... таблицы стилей.Окно таблицы стилей откроется, когда вы сейчас измените что-то, что изменится весь выбранный вами виджет.

Вставить в таблицу стилей:

QLabel <- Имя элемента </p>

{......} <- фигурные скобки должны быть установлены вокруг изменений </p>

background-color: Black;<--- установите Цвет фона </p>

Полный пример:

    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

Дружеские пожелания sniffi

0 голосов
/ 28 января 2019

Попробуйте:

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

...