qt enabled属性导致图片颜色_【QT】使用qss美化QTreeView

6ee7d1aa506cb3b9ea289bd354854eac.png

1 QSS

Qt Style Sheets,简称QSS,也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上。

2 QSS语法

QSS的语法规则几乎与CSS相同。一条QSS的样式是由两部分组成的,一部分是选择器指定了哪些控件会受到影响,另一部分是指定了属性的值,表示这些控件的哪些属性会受到影响。例如:

QLabel { background-color: red ;}

QLabel 表示选择器,指定了所有的QLabel 或者是QLabel 的子类会受到影响,注意凡是继承自QLabel 的子类也会受到影响,这是与CSS中不同的地方,因为CSS应用的都是一些标签,或者自定义的id或类(id前用#,类前用.表示),没有类的继承概念。而后面的{background-color:red}则是规则的定义,表明指定背景颜色是红色。整个意思就是设置QLabel 类以及其子类的所有实例的背景色是红色。
同样,当选择器为具体的实例时,就只有当前实例生效,比如:

#mylabel { background-color: blue ;} //注意指定具体的实例时,name前面加#。

77cd480b252a2820e2c6d854d9a0c003.png

QSS中的选择器有:

1.通配选择器:* ; 匹配所有的控件

2.类型选择器:QPushButton ; 匹配所有QPushButton和其子类的实例

3.属性选择器:QPushButton[flat="false"]; 匹配所有flat属性是false的QPushButton实例,注意该属性可以是自定义的属性,不一定非要是类本身具有的属性

4.类选择器: .QPushButton ; 匹配所有QPushButton的实例,但是并不匹配其子类,注意前面有一个点号

5.ID选择器: #myButton; 匹配所有id为myButton的控件实例,这里的id实际上就是objectName指定的值

而在CSS中,选择器一般有标签,ID,类。但是没有继承和子类的概念。

3 程序加载QSS文件(style.qss)

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QFile file(":/StyleSheet/StyleSheet/style.qss");  // 指定路径
    if(file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        a.setStyleSheet(file.readAll());
        file.close();
    }

}

4 在style.qss文件中编写QTreeView的样式

鼠标悬浮与Item上,和选中Item时,边框以及背景颜色的变化:

QTreeView {
    alternate-background-color: yellow;
}

QTreeView {
    show-decoration-selected: 1;
}

QTreeView::item:hover {
    border: 1px solid blue;
    background : #DBDBDB;
}

QTreeView::item:selected {
    border: 1px solid red;
    background : green;
}

5 实际运行效果

选中Item时,边框变红,背景颜色为绿色

54dca80f1d9d8bd8ea0d0ea5fedd8d58.png

参考资料:

https://doc.qt.io/qt-5/stylesheet-examples.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值