QGuiApplication

【QT/C++】一文完美概括QT中的QCoreApplication、QGuiApplication与QApplication(三大 Application 基类) QT三大Application基类对比: 1️⃣ QCoreApplication - 最轻量,仅支持基础事件循环与信号槽,适合控制台/后台服务 2️⃣ QGuiApplication - 扩展图形支持(窗口/输入/屏幕管理),用于QML/Qt Quick应用 3️⃣ QApplication - 完整GUI支持,包含Widgets控件(按钮/菜单等),专为桌面应用设计 📌 关键区别: • 功能层级:Core < Gui < Application • 模块依赖依次增加 • 适用场景:无界面→ 阅读详情

类介绍

        QGuiApplication类管理GUI应用程序的控制流和主要设置。QGuiApplication包含主事件循环,处理和调度来自窗口系统和其他源的所有事件。它还处理应用程序的初始化和最终化,并提供会话管理。同时,还处理大多数系统范围内和应用程序范围内的设置。

QGuiApplication主要职责范围:

  • 使用用户的桌面设置初始化应用程序,例如palette(),font()等。以及跟踪这些属性,防止用户通过控制面板更改桌面。

  • 执行事件处理,从底层窗口系统接收事件,并将他们分配到相关的类中。

  • 解析常见的命令行参数,并设置其内部状态。

  • 提供用户可以通过翻译看到的字符串本地化。

  • 提供一些特殊的对象,比如剪切板等。

  • 管理应用程序窗口。

  • 管理应用程序的鼠标光标处理。

  • 提供复杂的会话管理。

属性

applicationDisplayName:QString

        应用程序的用户可见名称。该名称显示给用户,例如在窗口标题栏中,如果有必要,可以翻译。如果没有设置,则默认应用程序名称为显示名称。

  • QString applicationDisplayName()
  • void setApplicationDisplayName(const QString &name)
  • [signal] void applicationDisplayNameChanged()

desktopFileName:QString

        此属性保存应用程序的桌面项的基本名称。

  • QString desktopFileName()
  • void setDesktopFileName()

layoutDirection:Qt::LayoutDirection

        这个属性保留了应用程序的默认布局方向。系统启动时,默认布局方向取决于应用程序的语言。

  • Qt::LayoutDirection layoutDirection()
  • void setLayoutDirection(Qt::LayoutDirection direction)
  • [signal] layoutDirectionChanged(Qt::LayoutDirection direction)

platformName:const QString

        这个属性包含了基础平台插件的名称。

  • QString platformName()

primaryScreen:QScreen* const

        这个属性保留应用程序的主屏幕。

  • QScreen *primaryScreen()
  • [signal] void primaryScreenChanged(QScreen *screen)

quitOnLastWindowClosed:bool

        此属性保留应用程序是否在最后一个窗口关闭时隐式退出。默认为true。表示应用程序在最后一个可见窗口关闭时退出。

windowIcon:QIcon

        这个属性保存了默认窗口图标。

  • QIcon windowIcon()
  • void setWindowIcon(const QIcon &icon)

成员函数

[static] QWindowList QGuiApplication::allWindows()

        返回应用程序所有窗口列表。

[static] Qt::ApplicationState QGuiApplication::applicationState()

        返回应用程序的当前状态。

[signal] void QGuiApplication::applicationStateChanged(Qt::ApplicationState state)

        当应用程序状态改变时,发出该信号。

[static] void QGuiApplication::changeOverrideCursor(const QCursor &cursor)

        将当前应用程序覆盖的光标更改为cursor。如果没有调用setOverrideCursor(),则此函数无效。

[static] QClipboard *QGuiApplication::clipboard()

        返回用于与剪切板交互的对象。

[signal] void QGuiApplication::commitDataRequest(QSessionManager *manager)

        此信号设置会话管理。当QSessionManager希望应用程序提交其所有数据时,就会发出它。

[static] bool QGuiApplication::desktopSettingsAware()

        如果Qt设置为使用系统的标准颜色,字体等,则返回true,否则返回false。默认是true。

qreal QGuiApplication::devicePixelRatio() const

        返回系统上找到的最高屏幕设备像素比率。这是物理像素和设备无关像素之间的比率。只有你不知道要瞄准哪个窗口时,使用本功能。如果你知道目标窗口,请使用QWindow::devicePixelRatio()。

[override virtual protected] bool QGuiApplication::event(QEvent *e)

        重新实现QCoreApplication::event()。

[static] int QGuiApplication::exec()

        开启主线程事件循环。

[static] QObject *QGuiApplication::focusObject()

        返回当前活动窗口的QObject。它将是绑定到焦点事件的最终接收者。

[signal] void QGuiApplication::focusObjectChanged(QObject *focusObject)

        当与焦点相关事件的最终接收者改变时,发出该信号。focusObject是新的接收者。

[static] QWindow *QGuiApplication::focusWindow()

        返回接收与焦点相关事件的QWindow。

[signal] void QGuiApplication::focusWindowChanged(QWindow *focusWindow)

        当与焦点相关事件的接收窗口改变时,发出该信号。

[static] QFont QGuiApplication::font()

        返回默认的应用程序字体。

[signal] void QGuiApplication::fontChanged(const QFont &font)

        当应用程序字体改变时,发出该信号。

[signal] void QGuiApplication::fontDatabaseChanged()

        这个信号在加载或删除应用程序字体时发出。

[static] QInputMethod *QGuiApplication::inputMethod()

        返回输入法。输入法返回有关虚拟键盘的状态和位置信息。它还提供了关于当前聚焦的输入元件的位置信息。

[static] bool QGuiApplication::isFallbackSessionManagementEnabled()

        返回QGuiApplication是否将使用回退会话管理。默认为true。

[static] bool QGuiApplication::isLeftToRight()

        如果应用程序布局是Qt::LeftToRight,则返回true,否则返回false。

[static] bool QGuiApplication::isRightToLeft()

        如果应用程序布局是Qt::RightToLeft,则返回true,否则返回false。

bool QGuiApplication::isSavingSession() const

        如果应用程序当前正在保存会话,则返回true,否则返回false。

bool QGuiApplication::isSessionRestored() const

        如果应用程序从早期会话中恢复,则返回true,否则返回false。

[static] Qt::KeyboardModifiers QGuiApplication::keyboardModifiers()

        返回键盘上修改器的当前状态。当前状态会同步更新。

[signal] void QGuiApplication::lastWindowClosed()

        当最后一个可见的主窗口关闭时,该信号从exec()发出。默认情况下,QGuiApplication发出此信号后退出。可以通过设置quitOnLastWindowClosed为false关闭此功能。

[static] QWindow *QGuiApplication::modalWindow()

        返回最近的模式窗口。如果没有可见的模态窗口,此函数将返回0。模式窗口组织在堆栈中,此函数返回堆栈顶部的模式窗口。

[static] Qt::MouseButtons QGUiApplication::mouseButtons()

        返回鼠标上按钮的当前状态。当前状态会同步更新。

[override virtual] bool QGuiApplication::notify(QObject *object, QEvent *event)

        重新实现QCoreApplication::notify()。

[static] QCursor *QGuiApplication::overrideCursor()

        返回活动中的应用程序的光标。

[static] QPalette QGuiApplication::palette()

        返回默认的应用程序调色板。

[signal] void QGuiApplication::paletteChanged(const QPalette *palette)

        当应用程序的调色板改变时,发出该信号。

[static] QFunctionPointer QGuiApplication::platformFunction(const QByteArray &function)

        从平台插件匹配函数返回函数指针。

[static] QPlatformNativeInterface *QGuiApplication::platformNativeInterface()

        返回平台的本机接口,用于特定于平台的功能。

[static] Qt::KeyboardModifiers QGuiApplication::queryKeyboardModifiers()

        查询并返回修改器键的状态。

[static] void QGuiApplication::restoreOverrideCursor()

        撤销上一个setOverrideCursor(),如果setOverrideCursor()被调用两次,那么调用restorOverrideCursor()将激活第一个游标集。第二次调用此函数将恢复原始widget的光标。

[signal] void QGuiApplication::saveStateRequest(QSessionManager &manager)

        此信号涉及会话管理。当会话管理器希望应用程序为将来的会话保留其状态时,会调用它。

[signal] void QGuiApplication::screenAdded(QScreen *screen)

        每当系统中添加了新屏幕时,就会发出信号。

[static] QScreen *QGuiApplication::screenAt(const QPoint &point)

        返回point点上的屏幕,如果在屏幕外,则返回nullptr。该点与每组虚拟同级的virtualGeoemtry()有关。如果该点映射到一组以上的虚拟机同级,则返回第一个匹配。

[signal] void QGuiApplication::screenRemoved(QScreen *screen)

        每当从系统中移除屏幕时,就会发出此信号。

[static] QList<QScreen *> QGuiApplication::screens()

        返回与应用程序所连接的窗口系统相关联的所有屏幕列表。

QString QGuiApplication::sessionId() const

        返回当前会话的标识符。如果应用程序已从以前的会话中恢复,则此标识符与以前会话中的标识符相同。会话标识符保证对不同的应用程序和同一应用程序的不同实例都是唯一的。

QString QGuiApplication::sessionKey() const

        返回当前会话中的会话密钥。如果应用程序已从以前的会话中恢复,则此密钥与上次会话结束时的密钥相同。每次保存会话时,会话密钥都会更改。如果关闭过程被取消,则在再次关闭时将使用另一个会话密钥。

[static] void QGuiApplication::setDesktopSettingsAware(bool on)

        将Qt是否应用系统的标准颜色,字体等设置为打开。默认情况下,是打开的。

[static] void QGuiApplication::setFallbackSessionManagementEnable(bool enabled)

        设置QGuiApplication是否将使用回退会话管理启用。

[static] void QGuiApplication::setFont(const QFont &font)

        将默认的应用程序字体修改为font。

[static] void QGuiApplication::setOverrideCursor(const QCursor *cursor)

        将应用程序覆盖光标设置为光标。

[static] void QGuiApplication::setPalette(const QPalette *pal)

        修改应用程序的调色板为pal。

[static] QStyleHints *QGuiApplication::styleHints()

        返回应用程序的样式提示。样式提示封装了一组依赖于平台的属性,如双击间隔,全宽选择等。这些提示可以用于与底层平台进行更紧密的集成。

[static] void QGuiApplication::sync()

        可用于将Qt状态与windows Systems状态同步的函数。该函数将首先通过调用QCoreApplication::processEvents()来清空Qts事件,然后平台插件将与Windows系统同步,最后Qt事件将通过另一个对QCoreApplication::processEvents()的调用来传递;此功能耗时且不鼓励使用。

[static] QWindow *QGuiApplication::topLevelAt(const QPoint &pos)

        返回给定位置pos处的顶层窗口。

[static] QWindowList QGuiApplication::topLevelWindows()

        返回应用程序中顶级窗口的列表。

宏

qGuiApp

        引用唯一应用对象的全局指针。仅当该对象是QGuiApplication时才有效。

Qt | 事件第一节(QApplication、QGuiApplication、QCoreApplication) 阅读详情

相关推荐

QPixmap失败(Must construct a QGuiApplication before a QPixmap)

Must construct a QGuiApplication before a QPixmap 这些步骤应该可以帮助你解决这个问题。如果问题仍然存在,请确保你的代码正确地初始化了 Qt 库,并且上下文环境设置正确。在使用 Qt 的图形相关类之前,需要先创建一个应用程序对象,例如。请注意,如果你使用的是 Qt Quick 或 QML,请使用。虚要用户初始化QGuiApplication。,以确保正确的初始化和上下文环境。来创建你的应用程序对象,而不是。QPixmap运行崩溃。这个错误是因为在创建。

啊渊的专栏 2664

Qt应用程序类三剑客:QCoreApplication、QGuiApplication与QApplication的实战选型指南

本文详细解析了Qt应用程序类的三剑客:QCoreApplication、QGuiApplication与QApplication的实战选型指南。通过对比它们的功能差异、内存占用及适用场景,帮助开发者根据项目需求选择最合适的类,提升开发效率和性能优化。

weixin_29248653的博客 448

QPixmap: Must construct a QGuiApplication before a QPixmap

今天下午同事代码除了一个致命bug,一运行就崩溃,看了看他写的代码发现也没错; 崩溃的同时进行了报错:QPixmap: Must construct a QGuiApplication before a QPixmap 这是什么意思呢?结果他网上搜了一圈儿说,缺少库啥的,还有的说其他乱七八糟的原因; 结果反复注释反复测试,发现竟然是使用QPixmap定义了一个全局变量; 从而导致抛出上述错误,进而崩溃!!! 下图为示意图:定了了全局的QPixmap变量,产生上述报错!!!(你可以测试一下) 后来将该变量定

十三阿哥的博客 4283

Qt:QGuiApplication类

头文件: #include <QGuiApplication> cmake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) qmake: QT += gui cmake: Qt 5.0 继承自: QCoreApplication 继承者: QApplication 详细说明

OceanStar的博客 8874

地震勘探中的频谱分析:从基础到应用

本文深入探讨了地震勘探中的频谱分析技术,从基础原理到实际应用。通过傅里叶变换等工具,频谱分析能有效识别不同地震波的频率特征,指导数据采集和处理。文章结合油田勘探案例,展示了如何利用振幅谱和相位谱提升信噪比,并介绍了智能滤波等前沿技术在地震数据处理中的应用。

weixin_42557830的博客 406

OpenBCI脑电数据处理实战:用MNE库从Raw对象到可视化分析全流程

本文提供了使用MNE-Python库处理OpenBCI脑电数据的完整实战指南。从通过BrainFlow库获取原始数据流、创建核心的Raw对象,到进行工频滤波、带通滤波等关键预处理步骤,最后实现时域信号、功率谱密度及地形图等多种专业可视化分析,手把手教你完成脑机接口数据处理的全流程。

gin88的博客 368

QApplication 、QGUIApplication、QCoreApplication的关系:

                                                                吾闻池中鱼,不识海水深。 相互间的继承关系: QApplication &lt;—— QGuiApplication &lt;—— QCoreApplication &lt;—— QObject Qt模块: QCoreApplication定义在core模块中,为应...

Peace 2033

基于Android Studio的校园智能点餐系统开发实战(附完整源码与部署指南)

本文详细介绍了基于Android Studio开发校园智能点餐系统的完整流程,包括需求分析、环境搭建、数据库设计、客户端与后台功能实现。系统采用SSM框架和MySQL数据库,解决了校园食堂高峰期排队问题,提供高效的点餐体验。附完整源码与部署指南,助力开发者快速构建类似应用。

weixin_29015801的博客 559

QGuiApplication类的使用

类是Qt框架中用于创建非GUI应用程序的基础类,它提供了全局的应用程序环境和事件循环。通过该类,我们能够创建一个命令行程序或后台服务,以响应各种输入和产生输出。类封装了大量底层操作,包括处理事件、定时器、文件I/O和网络通信等。此外,它还提供了一组跨平台的API函数,能够实现进程控制、线程管理和异常处理等功能。在类的帮助下,我们可以轻松地创建不同类型的基于事件驱动的应用程序,并通过简单的事件处理机制响应这些事件。与类不同,

zw_ggr_2017的博客 1820

逆向攻防世界CTF系列40-ReverseMe-120

注意sub_401000main中只传了两个参数,但是跟进后发现四个(可能是隐式传递,放在寄存器里传递了),调试发现a4是输入长度,与最终的you_know_how_to_remove_junk_code比较的是v12(但是并没有被传入),开始怀疑是不是隐式传递了。_mm_xor_si128用于计算128位(16字节)的按位异或,然后通过v14控制循环结束的条件,可以看到v14增长的步长为16,而且通过上面得到的flag值解码得到的字符串为32个字节大小,正好是16的整数倍。

LH1013886337的博客 1407

2023 ICRA《Visual Language Maps for Robot Navigation》阅读笔记

视觉语言导航可以使用预先训练的现有的视觉语言模型来将图像与对象目标的自然语言描述相匹配,但它与绘制环境的过程仍然脱节,缺乏经典几何地图的空间精度。为了解决这个问题,我们提出了VLMaps,这是一种空间地图表示,它将预训练的视觉语言特征与物理世界的3D重建直接融合在一起。VLMaps可以使用标准探索方法从机器人上的视频馈送中自主构建,并在没有额外标记数据的情况下实现地图的自然语言索引。具体来说,当与大型语言模型(LLM)相结合时,VLMaps可以用于。

qq_44100524的博客 1990

QGuiApplication、QApplication、QCoreApplication的区别与联系

和是 Qt 中用于不同应用类型的核心类。它们的区别主要在于对 GUI 功能的支持程度。根据你的应用需求选择合适的类,可以确保应用程序的功能和性能达到最佳状态。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 1620

SAP-ABAP:SAP采购业务核心表关联关系详解

MM(核心)、FI(财务)、SD(计划协议):PR → PO → GR → MIRO → FI过账。

baidu_35680696的博客 930

QFontMetrics、QGuiApplication

QFontMetrics提供关于字体的指标信息。QFontMetrics的函数用于计算给定字体的字符和字符串的大小。有三种方法可以创建QFontMetrics对象:用QFont调用QFontMetrics构造函数会为屏幕兼容字体创建QFontMetrics对象,即字体不能是打印机字体。先上一张图:图片来自:Qt 字体(01):文本尺寸的常见参数解释_读书笔记-优快云博客如果要在坐标系原点绘制字符ch,则返回墨迹覆盖的矩形。

hw5230的博客 817

零基础学习simulink-- 基于自适应模糊PID控制的直流电机速度控制系统

通过上述代码实现,您可以逐步创建和搭建一个基于自适应模糊PID控制的直流电机速度控制系统。该系统能够根据电机的状态和误差实时调整PID参数,确保电机速度稳定在设定范围内。自适应模糊PID控制具有较强的鲁棒性和适应性,能够在存在不确定性和扰动的情况下提供快速且精确的控制性能。Simulink提供了强大的建模和仿真工具,使得控制系统工程师能够快速构建复杂的控制算法,并将其应用于实际工程中。直流电机建模:建立直流电机的动态模型,包括电枢电压、电流、转速和负载扭矩。自适应模糊PID控制器设计。

amy_mhd的博客 413

EMD (经验模态分解) 在 C++ 中的实现指南

EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。

qq_38334677的博客 1749

QGuiApplication QCoreApplication QApplication 的区别

最基础的应用程序类,**适用于没有 GUI(图形界面)**的应用,比如命令行工具或后台服务。:用于有 GUI(图形界面)但不使用 QWidget的应用,比如只用 QML 的项目。:最全的版本,继承自,适用于使用 QWidget 的传统桌面应用。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 521

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

QCoreApplication, QGuiApplication, QApplication

QCoreApplication`, `QGuiApplication`, 和 `QApplication` 是 Qt 框架中用于创建不同类型的用户界面应用程序的基础类。- 如果你需要一个图形界面但是不需要传统的窗口系统,例如开发一个触摸屏设备上的应用,可以考虑使用 `QGuiApplication`。- 对于大多数需要图形界面的应用程序,尤其是那些涉及到窗口、按钮、文本框等元素的应用,应该使用 `QApplication`。- **用途**:适用于非图形用户界面的应用程序,如控制台应用或后台服务。

BlueMan 511

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Qt--QCoreApplication、QGuiApplication、QApplication

QCoreApplication、QGuiApplication、QApplication区别和联系:从继承关系来看,QApplication继承自QGuiApplication,QGuiApplication继承自QCoreApplication,所以它们的功能是逐步递增的。从所处模块来看,QCoreApplication定义在core模块中,为应用程序提供了一个非gui的事件循环;QGuiApp

HW的博客 6719

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

QApplication QGuiApplication QCoreApplication 区别和联系

QCoreApplication、QGuiApplication、QApplication区别和联系: 继承关系: QApplication &lt;- QGuiApplication &lt;- QCoreApplication &lt;- QObject 所处的Qt模块: QCoreApplication定义在core模块中,为应用程序提供了一个非gui的事件循环;QGuiApplic...

jigetage的专栏 8472

QCoreApplication,QGuiApplication和QApplication之间关系

#mermaid-svg-5KcaCwjjHcNSTq0Z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5KcaCwjjHcNSTq0Z .error-icon{fill:#552222;}#mermaid-svg-5KcaCwjjHcNSTq0Z .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5KcaCwj

多看多听多总结 336

QGuiApplication::font(): no QGuiApplication instance and no application font set.

这个问题的出现是因为在使用matplotlib时,需要一个GUI环境,而在没有调用QGuiApplication之前调用了matplotlib,导致抛出该异常。即Class B 的 def __init__(self,fig=A()) -> None: 中的 fig=A() 对象产生于 import b 的时候。python 函数默认值如果是可变类型,那么其实例将只有一个,即无论 B()调用几次,其fig的默认值都是同一个 A()。在使用matplotlib之前,将下面的语句插入到程序中,并先执行该语句。

xiyangxiaoguo的博客 1030

QApplication、QGuiApplication和QCoreApplication三者的区别与联系

为什么80%的码农都做不了架构师?>>> ...

weixin_34168700的博客 4584

【QPixmap】: Must construct a QGuiApplication before a QPixmap原因及解决方案

【QPixmap】: Must construct a QGuiApplication before a QPixmap原因及解决方案

FreeLikeTheWind的博客 3089
上一篇: QCoreApplication
下一篇: Application
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值