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

0:翻译来源:

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

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

导言

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

内容目录:

  • 1:概览函数

  • 2:QSS 的语法工具

  • 3:在Qt Designer中使用QSSspa

  • 4:使用QSS自定义widgets的外观操作系统

  • 5:QSS参考手册翻译

  • 6:QSS的使用例子code

1:概览

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


下面是一个小例子:
例子中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 的语法“.......

相关文章
相关标签/搜索