ControlStateStyle QML Type
描述控件在给定状态下的样式。更多
| Import Statement: | import Qt.labs.StyleKit |
| Inherits: | |
| Inherited By: |
属性
- checked : ControlStateStyle
- disabled : ControlStateStyle
- focused : ControlStateStyle
- highlighted : ControlStateStyle
- hovered : ControlStateStyle
- pressed : ControlStateStyle
- vertical : ControlStateStyle
详细说明
ControlStateStyle 描述控件在特定状态下的样式。ControlStyle 继承 ControlStateStyle,因为它代表正常状态--直接在ControlStyle 上设置的属性描述了控件在无其他状态下的外观。然后通过嵌套状态(如pressed 、hovered 和checked )设置特定状态的覆盖。
嵌套状态并不相互排斥。多个状态可以同时激活--例如,按钮可以同时悬停和按下。当多个状态处于活动状态时,所有匹配的状态覆盖都会被应用。如果在多个活动状态中设置了相同的属性,则会按照以下优先顺序解决冲突:pressed,hovered,highlighted,focused,checked,vertical 。因此,举例来说,如果控件同时是pressed 和checked ,则pressed.background.color 优于checked.background.color 。
disabled 状态是个例外:禁用的控件不能与之交互,因此pressed,hovered,highlighted, 和focused 状态将不适用。不过,disabled 仍可与checked 和vertical 等状态结合使用。
嵌套越深的状态,其优先级越高。例如,当hovered 和pressed 都处于活动状态时,hovered.pressed.background.color 优先于hovered.background.color 。嵌套顺序并不重要:hovered.pressed 和pressed.hovered 是等价的。但是,如果同时使用这两种形式,哪种形式胜出就不确定了。
更深的状态嵌套也可用于解决冲突。如果在hovered 和checked 中设置了相同的属性,则优先顺序意味着hovered 的值胜出。如果您更愿意让选中的值获胜,或者在这种情况下使用一个完全不同的值,您可以覆盖hovered.checked 中的属性,这样它就优先于这两个值。
下面的代码段展示了如何根据按钮的状态对其进行不同的样式设置:
button { text.color: "white" background.color: "cornflowerblue" pressed.background.color: "cadetblue" hovered.background.color: "dodgerblue" highlighted.background.color: "lightblue" focused.background.color: "lightskyblue" checked.background.color: "darkseagreen" disabled.background.color: "gray" // hovered.checked takes precedence over both hovered and checked hovered.checked.background.color: "mediumseagreen" hovered.checked { // Nested states are grouped properties, so you can use the compact // per-property form above, or structure them hierarchically for // better readability. Both forms are functionally equivalent. pressed { // hovered.checked.pressed takes precedence over hovered.checked background { color: "mediumaquamarine" scale: 0.95 } text { bold: true } } } }
注意: Qt.labs 模块中的类型不保证在未来版本中保持兼容。
另请参阅 ControlStyle,DelegateStyle, 和FallbackStyle Reference。
属性文档
checked : ControlStateStyle
当控件为checked 时应用的样式覆盖。
另请参阅 pressed,hovered,highlighted,focused,vertical,disabled 和StyleReader.checked 。
disabled : ControlStateStyle
控件禁用时应用的样式覆盖。
禁用的控件不能与之交互,因此pressed,hovered,highlighted, 和focused 不会与禁用同时应用。
另请参阅 pressed,hovered,highlighted,focused,checked,vertical, 以及 StyleReader.disabled。
focused : ControlStateStyle
当控件为focused 时应用的样式覆盖。
另请参阅 pressed,hovered,highlighted,checked,vertical,disabled 和StyleReader.focused 。
highlighted : ControlStateStyle
当控件为highlighted 时应用的样式覆盖。
另请参阅 pressed,hovered,focused,checked,vertical,disabled 和StyleReader.highlighted 。
hovered : ControlStateStyle
当控件为hovered 时应用的样式覆盖。
另请参阅 pressed,highlighted,focused,checked,vertical,disabled 和StyleReader.hovered 。
pressed : ControlStateStyle
当控件为pressed 时应用的样式覆盖。
另请参阅 hovered,highlighted,focused,checked,vertical,disabled 和StyleReader.pressed 。
vertical : ControlStateStyle
当控件为vertical 时应用的样式覆盖(例如垂直Slider 或ScrollBar )。
另请参阅 pressed,hovered,highlighted,focused,checked,disabled, 和StyleReader.vertical 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.