QSS结合 对象的名称和属性设置 的使用

QSS结合 对象的名称和属性设置 的使用

QSS(Qt Style Sheets)是Qt框架中一种用于进行界面样式定制的技术,类似于CSS(Cascading Style Sheets)在Web开发中的作用。

QSS允许开发者通过类似于CSS的选择器和属性来定义Qt应用程序的样式,包括控件的颜色、字体、背景和边框等。通过使用QSS,开发者可以方便地改变Qt应用程序的外观和风格,以满足用户的需求和设计要求。

一、针对 控件类型 配置

  1. 编写py文件

    '''
        对象的名称和属性设置
    '''
    
    # 0. 导入需要的包和模块
    from PyQt5.Qt import *
    import sys
    
    
    # 1. 创建应用程序对象
    app = QApplication(sys.argv)
    
    # 2. 控件的操作
    # 2.1 创建控件
    window = QWidget()
    
    # 2.2 设置控件
    window.setWindowTitle("测试qss")
    window.resize(400, 400)
    
    #***********测试qss控件
    #设置QSS样式
    with open("test.qss", "r") as f:
        qApp.setStyleSheet(f.read()) # 通过qApp可以设置application的全局属性
    
    label = QLabel(window)
    label.setText("测试qss_1")
    
    #***********测试qss控件
    
    # 2.3 展示控件
    window.show()
    
    # 3. 应用程序的执行, 进入到消息循环
    sys.exit(app.exec_())
    
  2. 编写qss文件

    QLabel {
        font-size: 20px;
        color: red;
        border: 1px solid gray;
        border-radius: 8px;
    }
    

    注:这样配置只对 QLabel 类型控件生效。

  3. 测试效果
    在这里插入图片描述

二、针对 控件和对象名称 配置

  1. 修改py文件

    '''
        对象的名称和属性设置
    '''
    
    # 0. 导入需要的包和模块
    from PyQt5.Qt import *
    import sys
    
    # 1. 创建应用程序对象
    app = QApplication(sys.argv)
    
    # 2. 控件的操作
    # 2.1 创建控件
    window = QWidget()
    
    # 2.2 设置控件
    window.setWindowTitle("测试qss")
    window.resize(400, 400)
    
    # ***********测试qss控件
    # 设置QSS样式
    with open("test.qss", "r") as f:
        qApp.setStyleSheet(f.read())
    
    label = QLabel(window)
    label.setText("测试qss_1")
    
    # 添加一个设置对象名称的控件
    label2 = QLabel(window)
    label2.setObjectName("notice")
    label2.move(100, 100)
    label2.setText("测试qss_2")
    
    # ***********测试qss控件
    
    # 2.3 展示控件
    window.show()
    
    # 3. 应用程序的执行, 进入到消息循环
    sys.exit(app.exec_())
    
  2. 修改qss文件

    QLabel {
       font-size: 20px;
       color: red;
       border: 1px solid gray;
       border-radius: 8px;
    }
    
    /*添加notice对象名称*/
    QLabel#notice {
       font-size: 20px;
       color: blue;
       border: 1px solid gray;
       border-radius: 8px;
    }
    
    
    

    注:如此设置当控件只为QLabel时,显示为红色;当控件为QLabel且对象名称为notice时,显示为蓝色。

  3. 测试效果
    在这里插入图片描述

三、针对 控件、对象名称和属性设置 配置

  1. 修改py文件

    '''
       对象的名称和属性设置
    '''
    
    # 0. 导入需要的包和模块
    from PyQt5.Qt import *
    import sys
    
    # 1. 创建应用程序对象
    app = QApplication(sys.argv)
    
    # 2. 控件的操作
    # 2.1 创建控件
    window = QWidget()
    
    # 2.2 设置控件
    window.setWindowTitle("测试qss")
    window.resize(400, 400)
    
    # ***********测试qss控件
    # 设置QSS样式
    with open("test.qss", "r", encoding="utf8") as f:
       qApp.setStyleSheet(f.read())
    
    label = QLabel(window)
    label.setText("测试qss_1")
    
    # 添加一个设置对象名称的控件
    label2 = QLabel(window)
    label2.setObjectName("notice")
    label2.move(100, 100)
    label2.setText("测试qss_2")
    
    # 添加一个设置对象名称和属性的控件
    label3 = QLabel(window)
    label3.setObjectName("notice")
    label3.setProperty("notice_level", "info")
    label3.move(200, 150)
    label3.setText("测试qss_3")
    
    # ***********测试qss控件
    
    # 2.3 展示控件
    window.show()
    
    # 3. 应用程序的执行, 进入到消息循环
    sys.exit(app.exec_())
    
    
  2. 修改qss文件

    QLabel {
       font-size: 20px;
       color: red;
       border: 1px solid gray;
       border-radius: 8px;
    }
    
    /*添加notice对象名称*/
    QLabel#notice {
       font-size: 20px;
       color: blue;
       border: 1px solid gray;
       border-radius: 8px;
    }
    
    /*添加notice对象名称和属性要求*/
    QLabel#notice[notice_level="info"] {
       font-size: 20px;
       color: green;
       border: 1px solid gray;
       border-radius: 8px;
    }
    
    

    注:如此设置当控件只为QLabel时,显示为红色;当控件为QLabel且对象名称为notice时,显示为蓝色;当控件为QLabel、对象名称为notice、属性设置为“notice_level”对应“info”时,显示为绿色

  3. 测试效果
    在这里插入图片描述

四、总结

​ 可以使用QSS来控制QT中控件样式,将QSS单独配置成一个文件,这样所有想使用对应样式的窗口都可以独立调用对应的QSS文件,方便样式复用。

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值