PySide6.QtGui.QGuiApplication

class QGuiApplication

QGuiApplication 类管理 GUI 应用程序的控制流和主要设置。更多

PySide6.QtGui.QGuiApplication 的继承图

继承者: QApplication

概要

属性

方法

信号

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QGuiApplication 包含主事件循环,处理并分发来自窗口系统和其他来源的所有事件。它还处理应用程序的初始化和终止,并提供会话管理。此外,QGuiApplication 处理大多数系统范围和应用程序范围的设置。

对于任何使用Qt的GUI应用程序,无论应用程序在任何给定时间有0、1、2个或更多窗口,都精确地有一个 QGuiApplication 对象。对于非GUI的Qt应用程序,请改用QCoreApplication,因为它不依赖于Qt GUI模块。对于基于QWidget的Qt应用程序,请改用QApplication,因为它提供了创建QWidget实例所需的一些功能。

QGuiApplication 对象可以通过 instance() 函数访问,该函数返回一个等同于全局 qApp 指针的指针。

QGuiApplication 的主要职责领域是:

  • 它使用用户的桌面设置初始化应用程序,例如调色板(palette())、字体(font())和样式提示(styleHints())。它会跟踪这些属性,以防用户全局更改桌面设置,例如通过某种控制面板。

  • 它执行事件处理,这意味着它从底层窗口系统接收事件并将它们分派给相关的小部件。您可以使用sendEvent()和postEvent()将自己的事件发送到窗口。

  • 它解析常见的命令行参数并相应地设置其内部状态。有关更多详细信息,请参阅下面的constructor documentation

  • 它通过translate()提供了对用户可见的字符串的本地化。

  • 它提供了一些神奇的对象,比如clipboard()。

  • 它知道应用程序的窗口。你可以使用topLevelAt()询问某个位置的窗口是哪个,获取topLevelWindows()的列表等。

  • 它管理应用程序的鼠标光标处理,参见 setOverrideCursor()

  • 它提供了对复杂会话管理的支持。这使得应用程序在用户注销时能够优雅地终止,如果无法终止则可以取消关闭过程,甚至可以保存整个应用程序的状态以供将来的会话使用。详情请参见isSessionRestored()sessionId()commitDataRequest()saveStateRequest()

由于QGuiApplication对象进行了大量的初始化工作,它必须在创建任何与用户界面相关的其他对象之前创建。QGuiApplication还处理常见的命令行参数。因此,通常在应用程序本身对argv进行任何解释或修改之前创建它是一个好主意。

函数组

系统设置

desktopSettingsAware(), setDesktopSettingsAware(), styleHints(), palette(), setPalette(), font(), setFont().

事件处理

exec() , processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(), notify() .

Windows

allWindows() , topLevelWindows() , focusWindow() , clipboard(), topLevelAt() .

高级光标处理

overrideCursor() , setOverrideCursor() , restoreOverrideCursor() .

会话管理

isSessionRestored() , sessionId() , commitDataRequest() , saveStateRequest() .

杂项

startingUp(), closingDown().

另请参阅

QCoreApplicationQAbstractEventDispatcherQEventLoop

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property applicationDisplayNameᅟ: str

此属性保存此应用程序的用户可见名称。

此名称显示给用户,例如在窗口标题中。如有必要,可以翻译。

如果未设置,应用程序显示名称默认为应用程序名称。

另请参阅

applicationName

Access functions:
property desktopFileNameᅟ: str

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

这是文件名,不包括完整路径或根据freedesktop桌面条目规范表示此应用程序的桌面条目的尾随“.desktop”扩展名。

此属性精确指示了桌面条目所代表的应用程序,窗口系统需要此属性来检索此类信息,而无需依赖不精确的启发式方法。

最新版本的freedesktop桌面条目规范可以在此处获取here

Access functions:
property layoutDirectionᅟ: Qt.LayoutDirection

此属性保存此应用程序的默认布局方向。

在系统启动时,或者当方向明确设置为Qt::LayoutDirectionAuto时,默认的布局方向取决于应用程序的语言。

通知信号在Qt 5.4中引入。

Access functions:
property platformNameᅟ: str

此属性保存底层平台插件的名称。

QPA平台插件位于qtbase\src\plugins\platforms。在撰写本文时,支持以下平台插件名称:

  • android

  • cocoa 是 macOS 的一个平台插件。

  • directfb

  • eglfs 是一个平台插件,用于在没有实际窗口系统(如 X11 或 Wayland)的情况下,在 EGL 和 OpenGL ES 2.0 上运行 Qt5 应用程序。有关更多信息,请参阅 EGLFS。

  • ios (也用于 tvOS)

  • linuxfb 直接写入帧缓冲器。有关更多信息,请参阅 LinuxFB。

  • minimal 是提供给希望编写自己的平台插件的开发者的示例。然而,您可以使用该插件在没有GUI的环境中运行GUI应用程序,例如服务器。

  • minimalegl 是一个示例插件。

  • offscreen

  • qnx

  • windows

  • wayland 是一个用于 Wayland 显示服务器协议的平台插件,用于某些 Linux 桌面和嵌入式系统。

  • xcb 是 X11 窗口系统的一个插件,用于某些桌面 Linux 平台。

注意

在没有QGuiApplication的情况下调用此函数将返回默认的平台名称(如果可用)。默认平台名称不受-platform命令行选项或QT_QPA_PLATFORM环境变量的影响。

有关嵌入式Linux设备的平台插件的更多信息,请参阅Qt for Embedded Linux。

Access functions:
property primaryScreenᅟ: QScreen

此属性保存应用程序的主屏幕(或默认屏幕)。

这将是QWindows最初显示的屏幕,除非另有说明。

primaryScreenChanged 信号在 Qt 5.6 中引入。

另请参阅

screens()

Access functions:
property quitOnLastWindowClosedᅟ: bool

此属性控制当最后一个窗口关闭时,应用程序是否隐式退出。

默认是 true

如果此属性为true,应用程序将在最后一个可见的主窗口(即没有临时父窗口的顶级窗口)关闭时尝试退出。

请注意,尝试退出并不一定会导致应用程序退出,例如如果仍然存在活动的QEventLoopLocker实例,或者QEvent::Quit事件被忽略。

另请参阅

close()

Access functions:
property windowIconᅟ: QIcon

此属性保存默认窗口图标。

另请参阅

setIcon() 设置 应用程序 图标

Access functions:
__init__()
__init__(arguments)
Parameters:

arguments – 字符串列表

static allWindows()
Return type:

.list of QWindow

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

如果没有窗口,列表为空。

另请参阅

topLevelWindows()

static applicationDisplayName()
Return type:

字符串

属性 applicationDisplayNameᅟ 的获取器。

applicationDisplayNameChanged()

属性 applicationDisplayNameᅟ 的通知信号。

static applicationState()
Return type:

ApplicationState

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

您可以响应应用程序状态的变化来执行操作,例如停止/恢复CPU密集型任务、释放/加载资源或保存/恢复应用程序数据。

applicationStateChanged(state)
Parameters:

状态ApplicationState

当应用程序的state发生变化时,会发出此信号。

另请参阅

applicationState()

static changeOverrideCursor(arg__1)
Parameters:

arg__1QCursor

static clipboard()
Return type:

QClipboard

commitDataRequest(sessionManager)
Parameters:

sessionManagerQSessionManager

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

通常这意味着在获得用户许可后保存所有打开的文件。此外,您可能希望提供一种方式,让用户可以取消关机。

你不应该在这个信号内退出应用程序。相反,会话管理器可能会或可能不会在此之后执行此操作,具体取决于上下文。

警告

在此信号中,除非您向manager请求明确许可,否则无法进行用户交互。有关详细信息和示例用法,请参见allowsInteraction()allowsErrorInteraction()

注意

在连接到此信号时,您应该使用Qt::DirectConnection。

另请参阅

isSessionRestored() sessionId() saveStateRequest() Session 管理

static desktopFileName()
Return type:

字符串

另请参阅

setDesktopFileName()

属性 desktopFileNameᅟ 的获取器。

static desktopSettingsAware()
Return type:

布尔

devicePixelRatio()
Return type:

浮点数

返回系统中找到的最高屏幕设备像素比。这是物理像素与设备无关像素之间的比率。

仅当您不知道目标窗口时使用此函数。如果您知道目标窗口,请改用devicePixelRatio()

另请参阅

devicePixelRatio()

exec_()
Return type:

整数

static focusObject()
Return type:

QObject

返回当前活动窗口中的QObject,该对象将成为与焦点相关的事件(如键盘事件)的最终接收者。

focusObjectChanged(focusObject)
Parameters:

focusObjectQObject

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

另请参阅

focusObject()

static focusWindow()
Return type:

QWindow

返回接收与焦点相关的事件(如键盘事件)的QWindow

另请参阅

requestActivate()

focusWindowChanged(focusWindow)
Parameters:

focusWindowQWindow

当焦点窗口发生变化时,会发出此信号。focusWindow 是新的焦点窗口。

另请参阅

focusWindow()

static font()
Return type:

QFont

fontChanged(font)
Parameters:

字体QFont

注意

此函数已弃用。

请处理 QEvent::ApplicationFontChange 事件。

当应用程序的font发生变化时,会发出此信号。请改用QEvent::ApplicationFontChanged。

另请参阅

font()

fontDatabaseChanged()

当可用字体发生变化时,会发出此信号。

当应用程序字体被添加或删除时,或者当系统字体发生变化时,可能会发生这种情况。

static highDpiScaleFactorRoundingPolicy()
Return type:

HighDpiScaleFactorRoundingPolicy

static inputMethod()
Return type:

QInputMethod

static isLeftToRight()
Return type:

布尔

如果应用程序的布局方向是Qt::LeftToRight,则返回true;否则返回false

static isRightToLeft()
Return type:

布尔

如果应用程序的布局方向是Qt::RightToLeft,则返回true;否则返回false

isSavingSession()
Return type:

布尔

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

commitDataRequest()saveStateRequest()被触发时,或者当窗口随后被会话管理关闭时,true为真。

isSessionRestored()
Return type:

布尔

如果应用程序已从较早的会话中恢复,则返回 true;否则返回 false

static keyboardModifiers()
Return type:

KeyboardModifier的组合

返回键盘上修饰键的当前状态。当前状态会同步更新,因为事件队列会清空那些会自发改变键盘状态的事件(QEvent::KeyPress 和 QEvent::KeyRelease 事件)。

需要注意的是,这可能不会反映调用时输入设备上实际按下的键,而是上述事件中最后报告的修饰键。如果没有按下任何键,则返回 Qt::NoModifier。

lastWindowClosed()

当最后一个可见的主窗口(即没有临时父窗口的顶层窗口)关闭时,此信号从exec()发出。

默认情况下,QGuiApplication 在发出此信号后退出。可以通过将 quitOnLastWindowClosed 设置为 false 来关闭此功能。

static layoutDirection()
Return type:

LayoutDirection

另请参阅

setLayoutDirection()

属性 layoutDirectionᅟ 的获取器。

layoutDirectionChanged(direction)
Parameters:

方向LayoutDirection

属性 layoutDirectionᅟ 的通知信号。

static modalWindow()
Return type:

QWindow

返回最近显示的模态窗口。如果没有可见的模态窗口,此函数返回零。

模态窗口是一个将其modality属性设置为Qt::WindowModal或Qt::ApplicationModal的窗口。在用户继续程序的其他部分之前,必须关闭模态窗口。

模态窗口以堆栈形式组织。此函数返回堆栈顶部的模态窗口。

另请参阅

setModality()

static mouseButtons()
Return type:

MouseButton 的组合

返回鼠标按钮的当前状态。当前状态会同步更新,因为事件队列会清空那些会自发改变鼠标状态的事件(QEvent::MouseButtonPress 和 QEvent::MouseButtonRelease 事件)。

需要注意的是,这可能不会反映调用时输入设备上实际按下的按钮,而是反映上述事件中最后报告的鼠标按钮。如果没有按下任何鼠标按钮,则返回Qt::NoButton。

另请参阅

keyboardModifiers()

nativeInterface()
Return type:

对象

static overrideCursor()
Return type:

QCursor

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

如果没有定义应用程序游标(即内部游标堆栈为空),此函数将返回None

static palette()
Return type:

QPalette

paletteChanged(pal)
Parameters:

palQPalette

注意

此函数已弃用。

处理 QEvent::ApplicationPaletteChange 代替。

当应用程序的palette发生变化时,会发出此信号。请改用QEvent::ApplicationPaletteChanged。

另请参阅

palette()

static platformFunction(function)
Parameters:

函数QByteArray

Return type:

QFunctionPointer

static platformName()
Return type:

字符串

属性 platformNameᅟ 的获取器。

static primaryScreen()
Return type:

QScreen

属性 primaryScreenᅟ 的获取器。

primaryScreenChanged(screen)
Parameters:

屏幕QScreen

属性 primaryScreenᅟ 的通知信号。

static queryKeyboardModifiers()
Return type:

KeyboardModifier的组合

查询并返回键盘上修饰键的状态。与keyboardModifiers不同,此方法返回调用方法时输入设备上实际按下的键。

它不依赖于此进程接收到的按键事件,这使得在移动窗口时检查修饰键成为可能。请注意,在大多数情况下,您应该使用keyboardModifiers(),因为它更快且更准确,因为它包含了当前处理的事件接收时修饰键的状态。

另请参阅

keyboardModifiers()

static quitOnLastWindowClosed()
Return type:

布尔

属性 quitOnLastWindowClosedᅟ 的获取器。

static restoreOverrideCursor()

撤销最后一个setOverrideCursor()

如果setOverrideCursor()被调用了两次,调用restoreOverrideCursor()将激活第一个设置的光标。再次调用此函数将恢复原始小部件的光标。

saveStateRequest(sessionManager)
Parameters:

sessionManagerQSessionManager

此信号处理会话管理。当session manager希望应用程序为未来的会话保存其状态时,会调用此信号。

例如,文本编辑器会创建一个临时文件,其中包含其编辑缓冲区的当前内容、光标位置以及当前编辑会话的其他方面。

你不应该在这个信号内退出应用程序。相反,会话管理器可能会或可能不会在此之后执行此操作,具体取决于上下文。此外,大多数会话管理器很可能在应用程序启动后立即请求保存状态。这允许会话管理器了解应用程序的重启策略。

警告

在此信号中,除非您向manager请求明确许可,否则无法进行用户交互。详情请参见allowsInteraction()allowsErrorInteraction()

注意

在连接到此信号时,您应该使用Qt::DirectConnection。

另请参阅

isSessionRestored() sessionId() commitDataRequest() Session Management

screenAdded(screen)
Parameters:

屏幕QScreen

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

static screenAt(point)
Parameters:

QPoint

Return type:

QScreen

返回位于point处的屏幕,如果位于任何屏幕之外则返回None

point 与每组虚拟兄弟的 virtualGeometry() 相关。如果该点映射到多个虚拟兄弟组,则返回第一个匹配项。如果您希望仅搜索已知屏幕的虚拟桌面兄弟(例如,您的应用程序窗口屏幕的兄弟 QWidget::windowHandle()->screen()),请使用 virtualSiblingAt()

screenRemoved(screen)
Parameters:

屏幕QScreen

每当从系统中移除一个screen时,都会发出此信号。它提供了一个机会来管理屏幕上的窗口,然后Qt才会将它们移动到主屏幕。

static screens()
Return type:

QScreen的列表

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

sessionId()
Return type:

字符串

返回当前会话的标识符。

如果应用程序是从较早的会话中恢复的,此标识符与之前会话中的标识符相同。会话标识符保证对于不同的应用程序以及同一应用程序的不同实例都是唯一的。

sessionKey()
Return type:

字符串

返回当前会话中的会话密钥。

如果应用程序是从较早的会话中恢复的,此键与上一个会话结束时的键相同。

会话密钥每次保存会话时都会更改。如果关闭过程被取消,再次关闭时将使用另一个会话密钥。

static setApplicationDisplayName(name)
Parameters:

name – str

属性 applicationDisplayNameᅟ 的设置器。

setBadgeNumber(number)
Parameters:

数字 – 整数

将应用程序的徽章设置为 number

用于向用户提供关于未读消息数量或类似信息的反馈。

徽章将覆盖在macOS的Dock中的应用程序图标、iOS的主屏幕图标或Windows和Linux的任务栏上。

如果数字超出平台支持的范围,数字将被限制在支持的范围内。如果数字不适合徽章,数字可能会在视觉上被省略。

将数字设置为0将清除徽章。

另请参阅

applicationName

static setDesktopFileName(name)
Parameters:

name – str

另请参阅

desktopFileName()

属性 desktopFileNameᅟ 的设置器。

static setDesktopSettingsAware(on)
Parameters:

on – 布尔值

static setFont(arg__1)
Parameters:

arg__1QFont

static setHighDpiScaleFactorRoundingPolicy(policy)
Parameters:

策略HighDpiScaleFactorRoundingPolicy

static setLayoutDirection(direction)
Parameters:

方向LayoutDirection

另请参阅

layoutDirection()

属性 layoutDirectionᅟ 的设置器。

static setOverrideCursor(cursor)
Parameters:

光标QCursor

Return type:

QtGuiHelper::QOverrideCursorGuard*

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

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

应用程序覆盖光标旨在向用户显示应用程序处于特殊状态,例如在可能需要一些时间的操作期间。

此光标将显示在应用程序的所有小部件中,直到调用restoreOverrideCursor()或另一个setOverrideCursor()。

应用程序光标存储在内部堆栈上。setOverrideCursor() 将光标推入堆栈,而 restoreOverrideCursor() 从堆栈中弹出活动光标。changeOverrideCursor() 更改当前活动的应用程序覆盖光标。

每次调用setOverrideCursor()后,最终都必须跟随一个相应的restoreOverrideCursor(),否则堆栈将永远不会被清空。

示例:

QGuiApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
calculateHugeMandelbrot() # lunch time...
QGuiApplication.restoreOverrideCursor()

另请参阅

overrideCursor() restoreOverrideCursor() setCursor()

static setPalette(pal)
Parameters:

palQPalette

static setQuitOnLastWindowClosed(quit)
Parameters:

quit – 布尔值

属性 quitOnLastWindowClosedᅟ 的设置器。

static setWindowIcon(icon)
Parameters:

图标QIcon

另请参阅

windowIcon()

属性 windowIconᅟ 的设置器。

static styleHints()
Return type:

QStyleHints

static sync()
static topLevelAt(pos)
Parameters:

posQPoint

Return type:

QWindow

返回给定位置 pos 的顶层窗口(如果有的话)。

static topLevelWindows()
Return type:

.list of QWindow

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

另请参阅

allWindows()

static windowIcon()
Return type:

QIcon

另请参阅

setWindowIcon()

属性 windowIconᅟ 的获取器。