【Qt 全局属性相关】 Qt 应用程序行为的全局属性 Qt::ApplicationAttribute枚举解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【Qt 全局属性相关】 Qt 应用程序行为的全局属性 Qt::ApplicationAttribute枚举解析

枚举源码

enum ApplicationAttribute
    {
        // AA_ImmediateWidgetCreation = 0,
        // AA_MSWindowsUseDirect3DByDefault = 1,
        AA_DontShowIconsInMenus = 2,
        AA_NativeWindows = 3,
        AA_DontCreateNativeWidgetSiblings = 4,
        AA_PluginApplication = 5,
        AA_DontUseNativeMenuBar = 6,
        AA_MacDontSwapCtrlAndMeta = 7,
        AA_Use96Dpi = 8,
        AA_DisableNativeVirtualKeyboard = 9,
        // AA_X11InitThreads = 10,
        AA_SynthesizeTouchForUnhandledMouseEvents = 11,
        AA_SynthesizeMouseForUnhandledTouchEvents = 12,
#if QT_DEPRECATED_SINCE(6, 0)
        AA_UseHighDpiPixmaps Q_DECL_ENUMERATOR_DEPRECATED_X(
            "High-DPI pixmaps are always enabled. " \
            "This attribute no longer has any effect.") = 13,
#endif
        AA_ForceRasterWidgets = 14,
        AA_UseDesktopOpenGL = 15,
        AA_UseOpenGLES = 16,
        AA_UseSoftwareOpenGL = 17,
        AA_ShareOpenGLContexts = 18,
        AA_SetPalette = 19,
#if QT_DEPRECATED_SINCE(6, 0)
        AA_EnableHighDpiScaling Q_DECL_ENUMERATOR_DEPRECATED_X(
            "High-DPI scaling is always enabled. " \
            "This attribute no longer has any effect.") = 20,
        AA_DisableHighDpiScaling Q_DECL_ENUMERATOR_DEPRECATED_X(
            "High-DPI scaling is always enabled. " \
            "This attribute no longer has any effect.") = 21,
#endif
        AA_UseStyleSheetPropagationInWidgetStyles = 22,
        AA_DontUseNativeDialogs = 23,
        AA_SynthesizeMouseForUnhandledTabletEvents = 24,
        AA_CompressHighFrequencyEvents = 25,
        AA_DontCheckOpenGLContextThreadAffinity = 26,
        AA_DisableShaderDiskCache = 27,
        AA_DontShowShortcutsInContextMenus = 28,
        AA_CompressTabletEvents = 29,
        // AA_DisableWindowContextHelpButton = 30,
        AA_DisableSessionManager = 31,
        // Add new attributes before this line
        AA_AttributeCount
    };

枚举作用

这个枚举类型 Qt::ApplicationAttribute 定义了一些可以用来改变 Qt 应用程序行为的全局属性。以下是一些属性的描述:

  • AA_DontShowIconsInMenus: 如果设置为 true,菜单项将不显示图标。
  • AA_NativeWindows: 如果设置为 true,将尽可能使用本地窗口。否则,Qt 将尝试使用子窗口来减少系统资源的使用。
  • AA_DontCreateNativeWidgetSiblings: 如果设置为 true,Qt 将尽可能避免创建本地窗口的兄弟窗口。这可能会影响窗口的 Z 顺序。
  • AA_PluginApplication: 如果设置为 true,这个应用程序被认为是一个插件,可能没有一个主窗口。
  • AA_DontUseNativeMenuBar: 如果设置为 true,Qt 将不使用本地的菜单栏,而是使用 Qt 的自定义实现。
  • AA_Use96Dpi: 如果设置为 true,Qt 将假设屏幕的 DPI 为 96。这可能会影响字体和窗口的大小。
  • AA_DisableNativeVirtualKeyboard: 如果设置为 true,Qt 将不使用本地的虚拟键盘,而是使用 Qt 的自定义实现。
  • AA_SynthesizeTouchForUnhandledMouseEvents: 如果设置为 true,Qt 将为未处理的鼠标事件生成触摸事件。
  • AA_SynthesizeMouseForUnhandledTouchEvents: 如果设置为 true,Qt 将为未处理的触摸事件生成鼠标事件。
  • AA_ForceRasterWidgets: 如果设置为 true,Qt 将使用栅格引擎来绘制所有的窗口和控件,而不是使用本地的绘图系统。
  • AA_UseDesktopOpenGL: 如果设置为 true,Qt 将使用桌面 OpenGL(而不是 OpenGL ES)来绘制所有的窗口和控件。
  • AA_UseOpenGLES: 如果设置为 true,Qt 将使用 OpenGL ES(而不是桌面 OpenGL)来绘制所有的窗口和控件。
  • AA_UseSoftwareOpenGL: 如果设置为 true,Qt 将使用软件实现的 OpenGL(而不是硬件加速的 OpenGL)来绘制所有的窗口和控件。
  • AA_ShareOpenGLContexts: 如果设置为 true,Qt 将尽可能共享 OpenGL 上下文,以减少系统资源的使用。
  • AA_SetPalette: 如果设置为 true,Qt 将使用 QApplication::palette() 返回的调色板来绘制所有的窗口和控件,而不是使用本地的颜色。
  • AA_UseStyleSheetPropagationInWidgetStyles: 如果设置为 true,Qt 将使用样式表来改变控件的外观,而不是使用本地的样式。
  • AA_DontUseNativeDialogs: 如果设置为 true,Qt 将不使用本地的对话框,而是使用 Qt 的自定义实现。
  • AA_SynthesizeMouseForUnhandledTabletEvents: 如果设置为 true,Qt 将为未处理的平板电脑事件生成鼠标事件。
  • AA_CompressHighFrequencyEvents: 如果设置为 true,Qt 将压缩高频率的事件,如鼠标移动事件,以减少系统资源的使用。
  • AA_DontCheckOpenGLContextThreadAffinity: 如果设置为 true,Qt 将不检查 OpenGL 上下文的线程亲和性,这可能会影响多线程的 OpenGL 渲染。
  • AA_DisableShaderDiskCache: 如果设置为 true,Qt 将不使用磁盘缓存来存储编译后的着色器,这可能会影响 OpenGL 的性能。
  • AA_DontShowShortcutsInContextMenus: 如果设置为 true,上下文菜单中的快捷键将不会显示。
  • AA_CompressTabletEvents: 如果设置为 true,Qt 将压缩平板电脑事件,以减少系统资源的使用。
  • AA_DisableSessionManager: 如果设置为 true,Qt 将不使用会话管理器,这可能会影响应用程序的启动和关闭。

这些属性可以用 QCoreApplication::setAttributeQCoreApplication::testAttribute 函数来设置和查询。它们应该在创建 QApplication 对象后、显示任何窗口之前进行设置。

综合示例

以下是一个使用了一些 Qt::ApplicationAttribute 属性的示例:

#include <QApplication>
#include <QCoreApplication>
#include <QStyleFactory>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // 设置应用程序的名称
    QCoreApplication::setApplicationName("My Application");
    // 设置应用程序的版本号
    QCoreApplication::setApplicationVersion("1.0.0");
    // 设置应用程序的组织名称
    QCoreApplication::setOrganizationName("My Organization");
    // 不在菜单中显示图标
    a.setAttribute(Qt::AA_DontShowIconsInMenus, true);
    // 使用本地窗口,而不是子窗口
    a.setAttribute(Qt::AA_NativeWindows, true);
    // 不使用本地的菜单栏,而是使用 Qt 的自定义实现
    a.setAttribute(Qt::AA_DontUseNativeMenuBar, true);
    // 为未处理的鼠标事件生成触摸事件
    a.setAttribute(Qt::AA_SynthesizeTouchForUnhandledMouseEvents, true);
    // 使用桌面 OpenGL(而不是 OpenGL ES)来绘制所有的窗口和控件
    a.setAttribute(Qt::AA_UseDesktopOpenGL, true);
    // 使用 `QApplication::palette()` 返回的调色板来绘制所有的窗口和控件,而不是使用本地的颜色
    a.setAttribute(Qt::AA_SetPalette, true);
    // 不使用本地的对话框,而是使用 Qt 的自定义实现
    a.setAttribute(Qt::AA_DontUseNativeDialogs, true);
    // 压缩高频率的事件,如鼠标移动事件,以减少系统资源的使用
    a.setAttribute(Qt::AA_CompressHighFrequencyEvents, true);
    // 不使用磁盘缓存来存储编译后的着色器,这可能会影响 OpenGL 的性能
    a.setAttribute(Qt::AA_DisableShaderDiskCache, true);
    // 使用 std::shared_ptr 创建 MainWindow 对象
    std::shared_ptr<MainWindow> mainWindow = std::make_shared<MainWindow>();
    mainWindow->show();
    return a.exec();
}

这个示例展示了如何设置一些全局属性来改变 Qt 应用程序的行为。这些属性应该在创建 QApplication 对象后、显示任何窗口之前进行设置。请注意,这些属性并不是必须的,它们取决于你的应用程序需求。例如,如果你的应用程序不需要特定的字体或样式,或者你的应用程序不需要在高 DPI 屏幕上看起来清晰,那么你可以省略相应的设置。

# <font face="楷体" color=#984229 size =5> 结语 </font>
 **<font face="楷体" color=#984229 size =3>在我们的编程学习之旅中,理解是我们迈向更高层次的重要一步。然而,掌握新技能、新理念,始终需要时间和坚持。从心理学的角度看,学习往往伴随着不断的试错和调整,这就像是我们的大脑在逐渐优化其解决问题的“算法”。</font>**
 **<font face="楷体" color=#15427 size =3>这就是为什么当我们遇到错误,我们应该将其视为学习和进步的机会,而不仅仅是困扰。通过理解和解决这些问题,我们不仅可以修复当前的代码,更可以提升我们的编程能力,防止在未来的项目中犯相同的错误。</font>**
 **<font face="楷体" color=#9999 size =3>我鼓励大家积极参与进来,不断提升自己的编程技术。无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力。</font>**
___
>   **<font face="楷体"  size =5> 阅读我的CSDN主页,解锁更多精彩内容:[泡沫的CSDN主页](https://blog.csdn.net/qq_21438461)</font>**
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/8b1f73f1d9e44f5a886873e91756ae98.jpeg#pic_center)


目录
相关文章
|
1月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
120 60
|
5月前
|
存储 算法 C++
【Qt应用开发】复刻经典:基于Qt实现Windows风格计算器(加减乘除、删除、归零功能全解析)
在Qt中,"栈"的概念主要体现在两个层面:一是程序设计中的数据结构——栈(Stack),二是用户界面管理中的QStackedWidget控件。下面我将分别简要介绍这两个方面:
165 4
|
3月前
|
索引 Python
XPath解析之获取属性
XPath解析(三)
62 10
|
3月前
|
编解码 开发工具 UED
QT Widgets模块源码解析与实践
【9月更文挑战第20天】Qt Widgets 模块是 Qt 开发中至关重要的部分,提供了丰富的 GUI 组件,如按钮、文本框等,并支持布局管理、事件处理和窗口管理。这些组件基于信号与槽机制,实现灵活交互。通过对源码的解析及实践应用,可深入了解其类结构、布局管理和事件处理机制,掌握创建复杂 UI 界面的方法,提升开发效率和用户体验。
196 13
|
4月前
|
数据采集 API 开发工具
淘系商品详情数据解析(属性youhui券sku详情图等)API接口开发系列
在电商领域,特别是像淘宝(淘系)这样的平台,商品详情数据对于商家、开发者以及数据分析师来说至关重要。这些数据包括但不限于商品属性、优惠券信息、SKU(Stock Keeping Unit)详情、商品图片、售后保障等。然而,直接访问淘宝的内部API接口通常需要特定的权限和认证,这通常只对淘宝的合作伙伴或内部开发者开放。 不过,对于需要这些数据的第三方开发者或商家,有几种方式可以间接获取或解析淘系商品详情数据: ——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
4月前
|
JavaScript 前端开发 算法
【Vue秘籍揭秘】:掌握这一个技巧,让你的列表渲染速度飙升!——深度解析`key`属性如何成为性能优化的秘密武器
【8月更文挑战第20天】Vue.js是一款流行前端框架,通过简洁API和高效虚拟DOM更新机制简化响应式Web界面开发。其中,`key`属性在列表渲染中至关重要。本文从`key`基本概念出发,解析其实现原理及最佳实践。使用`key`帮助Vue更准确地识别列表变动,优化DOM更新过程,确保组件状态正确维护,提升应用性能。通过示例展示有无`key`的区别,强调合理使用`key`的重要性。
70 3
|
4月前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
4月前
|
数据采集 JSON API
淘系商品详情图属性sku价格解析,API接口系列
淘宝(Taobao)作为阿里巴巴集团旗下的电商平台,其商品详情图、属性、SKU和价格的采集通常不直接通过公开的API接口来实现,因为淘宝的API主要面向商家和开发者提供店铺管理、订单处理、物流查询等功能,并不直接提供商品详情页的完整数据抓取接口
|
4月前
|
XML API 数据库
商品详情数据API接口概念(sku详情图属性等全面的解析)
商品详情数据API接口是指一种编程接口(API, Application Programming Interface),它允许开发者或系统以编程方式获取商品的详细信息,包括但不限于SKU(Stock Keeping Unit,库存量单位)的详细信息、商品图片、商品属性、价格、库存状态、用户评价等。这种接口通常由电商平台、商品数据库服务商或第三方数据提供商提供,旨在帮助开发者或企业快速集成商品数据到其应用程序或系统中。
|
5月前
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。