Qt Style Sheet 翻译(上)

Qt Style Sheets

Qt Style Sheet 是一个强大的机制,它允许你来定制 widget 的外观。此外也可通过子类化 QStyle 。他的概念、术语、语句很大程度受了 CSS 样式表的影响。
主题:
  • Overview
  • The Style Sheet Syntax
  • Qt Designer Integration
  • Customizing Qt Widgets Using Style Sheets
  • Qt Style Sheets Reference
  • Qt Style Sheets Examples
概览:
Style sheets 是文字式的说明,能被设置在整个应用,使用 QApplication::setStyleSheet() 或者在一个特别的 widget (和他的孩子)使用 QWidget::setStyleSheet(). 如果一些 style sheets 被设置在不同的水平, Qt 得到有效的 style sheet 从那些被设置的。这被叫做级联。
例如:下面得 style sheet 表明所有 QLineEdit 应该使用黄色作为他们的背景色。所有的 QCheckBox 应该使用红色作为文字颜色。
QLineEdit {background: yellow}
QCheckBox {color : red}
这种风格定制, style sheet 是更强大的比 QPalette 。例如,他可能尝试设置 QPalette::Button 角色为红色,为一个 QPushButton 来包含一个红色的按钮。尽管如此,这不被保证来工作为所有的样式,因为样式作者是被限制在不同的平台的准则。
Style sheets 让你呈现所有的定制风格,他们是不同或者不可能使用 QPalette 单独呈现。如果你想要黄色背景为某强制的区域,红色文字为潜在的毁灭性的按钮,或者想要改变 checkBox ,都可使用 style sheets
Style sheets 被应用在目前的 widget style 的顶部。意味着你的应用将看起来更像本地的风格。但是任何 style sheet 构造将被考虑。不像 pattle 无足轻重的, style sheets 提供保证,如果你设置一个按钮的背景颜色为红色,你能确保按钮将有一个红色的背景,在所有的平台上。此外, Qt Designer 提供风格集成,使他容易的预览风格的效果在不同的 widget style 上。
此外, style sheets 能被用来提供一个与众不同的外观和感觉为你的应用,不必子类化 QStyle 。例如,你能使用随意的图片转世按钮来使他们与众不同。使用这个机制,你也能完成较小的定制。他将正常的需要子类化一些风格的类,例如详述一个 style init Style sheet 例子描述在定义两个完全不同的风格下,你能试验并且修饰按照意愿。
当一个 style sheet 被激活, QStyle 返回被 QWidget::style() 是一个包装“ style sheet ”风格 , 不是特别平台的风格。包装风格确保任何激活的风格被遵守,否则促使绘画操作者到基本的、平台独立的风格。
警告: Qt 样式表目前不支持为定制的 QStyle 子类。我们计划在未来的版本中加入。

The Style Sheet Syntax

Qt Style Sheet 机制与 css 几乎相同。
  • Style Rules
  • Selector Types
  • Sub-Controls
  • Pseudo-States
  • Conflict Resolution
  • Cascading
  • Inheritance
  • Widgets inside C++ namespaces
  • Setting QObject properties
风格规则:
Style sheets 包含一套 style 规则。一个 style rule 由一个 selector 和一个 declaration 组成。 Selector 表明那个 widget rule 影响; declaration 表明那个属性应该被设置在 widget ,例如:
QPushButton { color : red}
在上面的 style rule QPushButton 是一个 selector {color :red } 是一个 declaration Rule 表明 QPushButton 和他的子类应该使用 red 作为他们的前景颜色。
Qt style sheet 一般是不敏感的,( color,Color,COLOR,CoLor 代表同样的属性)。唯一的区别是类名,对象名,和 Qt 特性名,是敏感的。
一些 selector 能被表明为同样的 declaration ,使用那个逗号( , )来区分 selectors 。例如,
QPushButton, QLineEdit, QComboBox { color: red }
      
等同于下面三条语句:
QPushButton { color: red }
      
 QLineEdit { color: red }
      
 QComboBox { color: red }
      
Declaration 部分是一个清单 属性:值(成对出现)。关闭在 {} 和区别用分号。例如:
QPushButton { color: red; background-color: white }
      
Selector 类型:
到目前为止所有的例子使用最简单的 selector 。类型选择器。 Qt Style Sheets 支持所有的选择器定义在 CSS2
选择器                          例子                             解释
通用选择器                   *                          适合所有 widget
类型选择器            QPushButton                适合 QPushButton 和他的子类
属性选择器            QPushButton[flat=”false”]     适合不是 flat QPushButton 。你能使用这个
选择器来测试任何 Qt 属性,支持 QVariant::toString ()。此外,特别的 class 属性被支持。这个选择器可能也被用来测试有活力的属性。为更多的关于使用有活力的属性,参考 Customizing Using Dynamic Properties 。代替使用 = ,你能使用 ~= 来测试是否一个 qt 属性 QStringList 包含一个被给的 QString
警告:如果 Qt 属性的值,改变在 style sheet 已经被设置之后,他可能必须迫使一个 style sheet 重新计算。一种办法完成这个是取消 style sheet 并且重新设置它。
类选择器 .QPushButton 适合 QpushButton ,但是不是他的子类。这                     是相同的 *[class~=”QPushButton”]
ID 选择器   QPushButton#okButton 适合所有 QPushButton ,他们的对象名是 okButton
后代选择器     QDialog QPushButton 适合所有 QPushButton ,他们是一个 QDialog 的后代
孩子选择器 QDialoog>QPushButton 社和所有 QPushButton ,他们是 QDialog 的直接孩子。

你可能感兴趣的:(style,职场,qt,sheet,休闲)