Qt Style Sheets--简介
2015-08-16 16:39
316 查看
(本文翻译自Qt SDK帮助手册,水平有限,多多包含,不是完全的直译)
Qt样式表是一个功能强大的机制,它允许您自定义部件的外观,这是除了子类化QStyle来自定义部件外观的另一种机制(其实Qt样式表跟QStyle有很大的关系,以后慢慢了解)。
Qt样式表的概念、术语、语法都深受HTML启发Cascading Style Sheets (CSS)但是却适合于widgets的世界。
Qt设计师集成开发工具(以后不对这个模块做描述,大家有兴趣的自己看看帮助文档)
使用样式表自定义Qt Widgets
Qt样式表标准
Qt样式表例子
举个例子,下面的样式表语句规定所有的QLineEdit都应该将黄色作为它们的背景样色,同样的,所有的QCheckBox都应该将红色作为该部件上字体的颜色:
对于这种定制,样式表比QPalette要强大得多。举个例子,通过设置QPalette::Button的role成红色以获得一个红色的按钮看似非常有诱惑力,然而,这并不能保证适用于所有风格,因为样式作者会受限于不同平台的指导方针和(在 Windows XP 和 Mac OS X)本地的主题引擎。
此外,样式表可以在你不子类化QStyle的情况下也能为你的应用程序提供独特的观感。举个例子,你可以为单选框和复选框指定任意的图片以使它们更加的突出。使用这种技术,还可以实现更小的定制,但这通常需要子类化一下style类,比如style hint。下面展示的两个独特的样式表,你可以尝试和修改。
样式表让你可以执行任何QPalette难以做到甚至不能做到的各种自定义操作。 如果你想让必填字段显示黄色的背景色、让退出按钮等破坏性的按钮显示红色的文字有或者想弄个花里胡哨的复选框,那么样式表都能满足你。
样式表应用在所有部件的顶层,这意味着你的应用程序看起来会像本地的样式,但是任何样式表定义都会被考虑。与palette那种不靠谱相反,样式表能保证:如果你把QPushButton的背景色设置成了红色,你可以确定在所有平台和主题下它的背景颜色都是红色的。此外,Qt 设计师工具提供了样式表的集成,可以更直观的看到样式表的效果。
当样式表激活时,由QWidget::style()返回的QStyle其实是“样式表”的包装而不是平台指定的样式。“样式表”的包装保证样式表会优先使用,否则在进行绘制操作时,平台指定的样式将会生效。(例子:Windows XP上使用QWindowsXPStyle)
版权声明:本文为博主原创文章,欢迎转载,转载请注明出处
Qt样式表是一个功能强大的机制,它允许您自定义部件的外观,这是除了子类化QStyle来自定义部件外观的另一种机制(其实Qt样式表跟QStyle有很大的关系,以后慢慢了解)。
Qt样式表的概念、术语、语法都深受HTML启发Cascading Style Sheets (CSS)但是却适合于widgets的世界。
专题
概述Qt设计师集成开发工具(以后不对这个模块做描述,大家有兴趣的自己看看帮助文档)
使用样式表自定义Qt Widgets
Qt样式表标准
Qt样式表例子
概述
样式表是一种能使用 QApplication::setStyleSheet()设置到整个应用程序或者使用QWidget::setStyleSheet()设置到某个特定的部件(包括其子部件)的文本规范。如果在几个不同的级别上设置了不同的样式表,Qt会同时应用这几个级别上设置的所有样式表,这就是所谓的级联。举个例子,下面的样式表语句规定所有的QLineEdit都应该将黄色作为它们的背景样色,同样的,所有的QCheckBox都应该将红色作为该部件上字体的颜色:
QLineEdit { background: yellow } QCheckBox { color: red }
对于这种定制,样式表比QPalette要强大得多。举个例子,通过设置QPalette::Button的role成红色以获得一个红色的按钮看似非常有诱惑力,然而,这并不能保证适用于所有风格,因为样式作者会受限于不同平台的指导方针和(在 Windows XP 和 Mac OS X)本地的主题引擎。
此外,样式表可以在你不子类化QStyle的情况下也能为你的应用程序提供独特的观感。举个例子,你可以为单选框和复选框指定任意的图片以使它们更加的突出。使用这种技术,还可以实现更小的定制,但这通常需要子类化一下style类,比如style hint。下面展示的两个独特的样式表,你可以尝试和修改。
样式表让你可以执行任何QPalette难以做到甚至不能做到的各种自定义操作。 如果你想让必填字段显示黄色的背景色、让退出按钮等破坏性的按钮显示红色的文字有或者想弄个花里胡哨的复选框,那么样式表都能满足你。
样式表应用在所有部件的顶层,这意味着你的应用程序看起来会像本地的样式,但是任何样式表定义都会被考虑。与palette那种不靠谱相反,样式表能保证:如果你把QPushButton的背景色设置成了红色,你可以确定在所有平台和主题下它的背景颜色都是红色的。此外,Qt 设计师工具提供了样式表的集成,可以更直观的看到样式表的效果。
当样式表激活时,由QWidget::style()返回的QStyle其实是“样式表”的包装而不是平台指定的样式。“样式表”的包装保证样式表会优先使用,否则在进行绘制操作时,平台指定的样式将会生效。(例子:Windows XP上使用QWindowsXPStyle)
版权声明:本文为博主原创文章,欢迎转载,转载请注明出处
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解