【QT入门】 Qt自定义控件与样式设计之qss选择器

往期回顾:

【QT入门】 无边框窗口设计综合运用之自定义标题栏带圆角阴影的窗口-CSDN博客

【QT入门】 无边框窗口设计之综合运用,实现WPS的tab页面-CSDN博客

【QT入门】Qt自定义控件与样式设计之qss介绍(Qt style sheet)-CSDN博客

 【QT入门】 Qt自定义控件与样式设计之qss选择器

 一、什么是qss选择器

QSS选择器是Qt Style Sheets的一部分,用于选择Qt应用程序中的UI元素并为其应用样式。类似于CSS选择器,QSS选择器允许我们根据特定的条件选择UI元素,并为其设置样式,从而定制应用程序的外观和风格。通过QSS选择器,我们就可以轻松地修改Qt应用程序的外观,使其更符合用户需求或应用程序设计风格。

二、常见选择器

1、通配符选择器

匹配所有的控件,用星号表示

* {
        background-color:yellow;
}

或者指明子类,注意*和子类名之间有空格的

* QPushButton{
        background-color:yellow;
}

另外这里指明子类是可以指明多个的,比如 

* QPushButton, QLabel{
        background-color:yellow;
}

2、类型选择器

通过控件类型来匹配控件的(包括子类)

QWidget {
        background-color:yellow
}

此时所有的控件背景颜色都会是这个,因为QWidget是所有ui控件的最高类

如果想防止子类,例如窗口被修改,可以设置属性,这个我们很早之前就提过

//禁止父窗口影响子窗口样式
setAttribute(Qt::WA_StyledBackground);

类选择器也是通过控件类型来匹配控件的,**但不同的是不包含子类**,语法是在类前面加了个.(是个点)这样就只对QWidget生效,如果界面上有其它控件则不生效。

.QWidget {
        background-color:yellow
}
注意类前面有个点

3、ID选择器

ID选择器是结合控件的objectname来匹配控件的,qss里objectname前加个井号来表示,不同控件的objectname是可以相同的

怎么个事呢,因为每个控件都有自己的objectname,当我想指定给某个控件添加样式的时候,就可以用这个id选择器,#前面是类名,后面是控件的objectname

QPushButton#pushbutton_2{
        background-color:yellow;
}

4、属性选择器

属性选择器是结合控件的属性值来匹配控件的,首先要设定控件的属性,qss里属性用[proterty = attitude]来限制 

4.1qt代码
label1.setProperty('notice_level','error')
label2.setProperty('notice_level','warning')
4.2qss样式 
.QLabel {
        background-color:pink;
}

.QLabel[notice_level='warning'] {
        border:5px solid yellow;
}

.QLabel[notice_level='error'] {
        border:5px solid red;
}

这里还有个用法,就是qss内只定义属性值,只要有这个属性的控件就可以被选中,也就是说,只要有novice_level这个属性的控件都是生效的。

.QLabel [notice_level]{
        background-color:pink;
}

.QLabel[notice_level='warning'] {
        border:5px solid yellow;
}

.QLabel[notice_level='error'] {
        border:5px solid red;
}

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++开发框架,非常适合用于GUI开发Qt提供了一套基于CSS(Cascading Style Sheets)的机制,可以用于自定义和美化Qt界面的控件样式。使用CSS可以将样式与功能分离,使得程序具有更好的可维护性和可扩展性。以下是使用Qt自定义控件并应用CSS的一些步骤: 1. 创建自定义控件 首先需要继承Qt的现有控件类,并添加自己的行为和属性。例如,可以创建一个自定义QPushButton,并添加一个新的属性用于设置背景颜色。 class MyButton : public QPushButton { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) public: explicit MyButton(QWidget *parent = nullptr); void setBackgroundColor(const QColor& color); QColor backgroundColor() const; private: QColor m_backgroundColor; }; 2. 应用CSS样式 在应用CSS之前,需要将控件的setObjectName()方法设置为一个独特的名称,以便CSS选择器可以找到它。然后,可以使用类似于HTML的CSS语法来设置样式,例如设置背景颜色和文本颜色。 QPushButton#myButton { background-color: green; color: white; } 3. 实现样式选择器 使用CSS的选择器是选择一些元素的方式,正如HTML中的选择器一样。在Qt中,可以使用setStyleSheet()方法来设置CSS样式。应用程序可以通过在QSS样式表中为定制控件实现一些自定义选择器,以实现更具体的样式。 QPushButton#myButton:hover { background-color: red; color: white; } 总之,通过继承Qt现有控件类并添加自己的属性和行为,然后使用CSS样式选择器QSS样式表来自定义和美化Qt界面的控件样式。这种方法可以使界面更加美观和易于维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值