[Qt][翻译]Qt Style Sheets内容学习-1

0:翻译来源:

http://doc.qt.io/qt-5.6/stylesheet.html

翻译起因:最近做一个项目,后台数据处理部分已经完成,需要定制前端GUI的风格,前两天一直是边写代码,边网上查!比较麻烦的是查到的内容比较零散,于是想从Qt官网看下系统一点的教程,边翻译边学吧!也顺便造福一下网友!

导言

Qt Style Sheets(QSS)是一个强大的工具,它使你可以自己定义部件(widgets)的外观,当然我们也可以通过子类化QStyle实现自定义部件外观的功能。如果你学过HTML编程中的CSS,你就会发现Qt Style Sheets的概念、术语和语法深受 CSS的启发,但是QT把QSS这个强大的工具应用于整个widgets的世界。

内容目录:

  • 1:概览

  • 2:QSS 的语法

  • 3:在Qt Designer中使用QSS

  • 4:使用QSS自定义widgets的外观

  • 5:QSS参考手册

  • 6:QSS的使用例子

1:概览

在代码模式下,QSS的设置可以通过调用QApplication::setStyleSheet() 函数,这个函数的作用范围是整个应用程序,当然我们也可调用QWidget::setStyleSheet()函数,仅仅作用于特定的widget对象。这里就会出现调用多个QSS的情况,Qt会根据就近原则进行样式的匹配,子类自己设置过的样式,就用自己的样式,不会考虑父类是否设置过!只有当子类没有设置过自己的样式时,才会使用父类的样式。学过CSS的同学应该知道我在说什么!


下面是一个小例子:
例子中qss指定了所有QLineEdit类型的对象的背景都会是黄色,所有QCheckBox类型的对象的文字颜色都会是红色。

QLineEdit     { background: yellow }
QCheckBox     { color: red }

上面这种方式的风格定制要比使用QPalette强大很多。例如,你可以尝试使用QPalette::Button的方法来设置QPushButton的颜色为红色,但是这不能保证没有的情况下都能正常工作,因为在不同的操作系统下,部件的style是被操作系统的主题控制器严格限制的。(说白了QPalette::Button这种方式通用性不好)


有了QSS就好了,使用QPalette来设置style时非常困难或是不可能的事,现在QSS可以轻松搞定了。如果你还在找寻强制设置close buttons或check boxs的背景是黄色,文字是红色的方法,那么QSS就是你要找的答案。


使用了QSS的widget的显示效果非常好,和当前系统的风格也会比较搭(老外好我废话)。任何QSS的设置都会产生效果,不像使用QPalette时,QSS提供的效果是可以得到保证的!(和上面说的一样,建议你使用QSS)。此外Qt Designer中已经集成了设置QSS的方法,这样非常方便设置好效果后马上可以看到widgets的表现。


QSS也可以为你的应用程序提供非常不一样的外观和感受,而不需要使用QStyle的子类。例如,你可以对radio buttons和check boxs使用任意的背景图片,从而让他们看起来更显眼。如果不使用QSS,你就需要子类化一些style 类才能达到效果,例如子类化中需要重写style hint。使用QSS后的效果图如下
图片描述


当QSS的设置激活后,QStyle返回的是一个经常包装后的QWidget::sytle()函数,该函数中包装了QSS设置的”style sheet”,而不是与具体操作系统有关的style。部件在被绘制时,优先使用QWidget::sytle()函数中包含的sytle,只有该函数中没有设置的style,才会调用底层与平台相关的style。


下接第二部分:”2:QSS 的语法“.......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值