样式(继承QStyle的类)代表小部件绘制并封装 GUI 的外观。 QStyle 类是一个抽象基类,它封装了 GUI 的外观。 Qt 的内置小部件使用它来执行几乎所有的绘图,确保它们看起来与等效的原生小部件完全一样。
Qt带有一系列内置样式,某些样式仅在特定平台上可用。自定义样式可作为插件使用,或者通过使用 QStyleFactory::create()创建特定样式类的实例并使用QApplication::setStyle()设置它。
QtitanRibbon官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网
调色板
每种样式都提供了一种颜色 - 即QBrush,用于绘制小部件的调色板。对于不同的小部件状态(QPalette::ColorGroup)有一组颜色:激活(窗口中具有键盘焦点的小部件)、非激活(用于其他窗口的小部件)和禁用(被禁用的小部件),可以通过查询State_Active 和 State_Enabled 状态标志来找到这些状态。每个集合都包含由 QPalette::ColorRole 枚举给出的某些颜色角色,角色描述了应该在哪些情况下使用颜色(例如,用于绘制小部件背景、文本或按钮)。
如何使用颜色角色取决于样式,例如如果样式使用渐变,可以使用调色板颜色并使用QColor::darker() 和 QColor::lighter()使其更暗或更亮来创建渐变。通常如果您需要调色板未提供的画笔,则应尝试从中派生它。
提供调色板的QPalette存储不同小部件状态和颜色角色的颜色,样式的调色板由standardPalette() 返回。在应用程序 (QApplication::setStyle()) 或小部件 (QWidget::setStyle()) 上设置新样式时,标准调色板不会自动安装,因此您必须自己设置调色板 (QApplication::setPalette() ) 或 (QWidget::setPalette())。
不建议对颜色进行硬编码,因为应用程序和单个小部件可以设置自己的调色板,也可以使用其样式的调色板进行绘制。请注意,Qt 的小部件都没有设置自己的调色板,Java 风格确实对某些颜色进行了硬编码,但仅作为作者的决定; 不建议这样做。 当然,这并不意味着该样式在任何调色板中都应该看起来不错。
实现问题
实现样式时,需要考虑几个问题,我们将在此处提供有关实现的一些提示和建议。
在实现样式时,需要查看小部件的代码和基类及其源代码,这是因为小部件使用不同的样式,因为不同样式的虚函数中的实现会影响绘图的状态(例如,通过更改 QPainter 状态而不恢复它和绘制一些元素替代适当的像素度量和子元素)。
建议样式不要使用QStyle::sizeFromContents()函数改变小部件的建议大小,而是让 QCommonStyle 实现来处理它。 如果需要进行更改,则应尽量保持较小; 如果小部件的布局在各种样式中看起来差别很大,则应用程序开发可能会很困难。
Qt商用组件推荐
- QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
- QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
- QtitanNavigation:QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。
- QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!