qss自定义属性

本文介绍了如何在Qt中使用QSS(QtStyleSheet)进行界面样式设计,包括选择器的使用,通过setProperty设置控件的集合属性并在QSS中应用,以及在Python代码中动态修改QSS属性的方法。示例代码展示了如何设置和更改按钮及标签的样式属性。
摘要由CSDN通过智能技术生成

选择器

关于qss选择器的应用网上有很多资料,在此分享个链接可以作为参考qss选择器详解参考

Qt的集属性

使用setProperty设置属性,并在qss中指定生效的控件。

代码示例

from PyQt5.QtWidgets import *

import sys


class MainWidget(QWidget):
    def __init__(self):
        super(MainWidget, self).__init__()
        self.setWindowTitle('QMainWindow 模板')
        self.setMinimumSize(600, 600)
        layout = QVBoxLayout(self)
        # Set the stylesheet
        self.setStyleSheet(
            """
            QPushButton#StyledButton[Test=true] {
                color: #F00;
                background-color: #9fa8da;
            }
            """
        )
        btn = QPushButton('Click Me One')
        # 初始化集属性
        btn.setProperty('Test', True)
        btn.setObjectName('StyledButton')
        btn.clicked.connect(lambda: self.toggle(btn))
        layout.addWidget(btn)

    def toggle(self, widget):
        # 获取集属性
        isTest = widget.property('Test')
        # 设置集属性
        widget.setProperty('Test', not isTest)
        # 重新加载样式表
        widget.setStyle(widget.style())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWidget()
    main.show()

    sys.exit(app.exec_())

使用qss设置控件属性

qt是支持通过qss来设置控件的属性的,在qss中指定时添加前缀qproperty-
例如:在设置最小尺寸可以写成qproperty-minimumSize: 100px 100px;
设置控件的文本qproperty-text: '测试',引号可以带也可以不带,qt会自动转换格式。

代码示例

import sys

from PyQt5.Qt import *


class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(1000, 700)
        self.setStyleSheet(
            '''
            QLabel#customLabel {
                /*setMinimumSize属性*/
                qproperty-minimumSize: 100px 100px;
                qproperty-maximumSize: 100px 100px;
                qproperty-text: 测试火狐;
                background-color: #c04646;
            }
            '''
        )
        self.label = QLabel(self)
        self.label.setObjectName('customLabel')
        self.label.move(100, 100)


if __name__ == '__main__':
    QApplication.setHighDpiScaleFactorRoundingPolicy(
        Qt.HighDpiScaleFactorRoundingPolicy.PassThrough
    )
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    sys.exit(app.exec_())

在代码中修改qss中的值

python中,使用string标准库,可以使用这个库来替换qss中的数据

代码示例

from string import Template


class QSSTemplate(Template):
    delimiter = '--'


qss = '''
QLabel {
    border: 1px solid --ThemeColorPrimary;
    background-color: --ThemeColorPrimary;
    border-image: --imagePath;
}
'''

template = QSSTemplate(qss)
map = {'ThemeColorPrimary': '#009faa', 'imagePath': 'url(./image/1.png)'}
print(template.safe_substitute(map))
# 打印内容
# QLabel {
#     border: 1px solid #009faa;
#     background-color: #009faa;
#     border-image: url(./image/1.png);
# }

### 回答1: 在 qss 中设置自定义属性的方法如下: 1. 在 qss 文件中添加自定义属性的声明,例如: ``` QPushButton[customAttribute="value"] { /* Style rules go here */ } ``` 2. 在代码中为控件设置自定义属性,例如: ``` pushButton->setProperty("customAttribute", "value"); ``` 3. 在代码中应用 qss 样式表,例如: ``` pushButton->setStyleSheet(styleSheet); ``` 注意:自定义属性的名称必须以 "q_" 或 "Q_" 开头,否则无法在 qss 中使用。 ### 回答2: 在使用Qt编程时,可以使用QSSQt Style Sheets)来设置控件的样式和外观。要给控件设置自定义属性,可以按照以下步骤操作: 首先,在代码中创建一个派生自QWidget或其子类的自定义控件,例如MyWidget。 然后,在MyWidget类的头文件中定义一个成员变量作为自定义属性,例如myProperty。 接下来,在MyWidget类的实现文件中提供一个getter和setter方法来访问和修改这个自定义属性。 再次,在QSS中使用选择器来选择需要设置自定义属性的控件,例如具有自定义属性的MyWidget实例,可以通过选择器“MyWidget[myProperty="value"]”来选择。 最后,在QSS中使用属性设置语法来设置自定义属性的值。例如,可以通过设置“myProperty: value;”来给控件设置自定义属性的值。 总结起来,要在QSS内给控件设置自定义属性,需要在代码中定义自定义控件,提供getter和setter方法来访问和修改自定义属性,然后在QSS中使用选择器和属性设置语法来设置自定义属性的值。这样在QSS中就可以通过选择器选择具有自定义属性的控件,并为它们设置相应的样式。 ### 回答3: 在Qt中,可以通过在QSS样式表内定义自定义属性来给控件设置自定义属性。下面是一个实现的示例: 首先,在Qt设计师中设计界面并添加一个控件,例如QPushButton。然后,选择该控件,右键单击选择"Go to slot...",选择"clicked()"信号的槽函数。 在生成的槽函数内,可以通过setProperty()函数给控件设置自定义属性。例如,设置一个自定义属性"myProperty"为"myValue": ```cpp void MainWindow::on_pushButton_clicked() { ui->pushButton->setProperty("myProperty", "myValue"); } ``` 接下来,在QSS样式表中,可以通过"["和"]"操作符定义自定义属性的样式。例如,设置属性"myProperty"为"myValue"的背景颜色为红色: ```qss QPushButton[myProperty="myValue"] { background-color: red; } ``` 将以上样式表应用到控件上,即可使设置了自定义属性的控件显示红色背景。 需要注意的是,自定义属性的类型只能是字符串。如果要设置其他类型的属性,可以使用 QVariant 类型进行转换。 总结来说,通过在槽函数内使用 setProperty() 方法给控件设置自定义属性,然后在样式表中使用设置的属性值来定义样式,就可以实现在 QSS 内给控件设置自定义属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值