PySide6.QtGui.QGuiApplication¶
- class QGuiApplication¶
QGuiApplication类管理 GUI 应用程序的控制流和主要设置。更多…继承者:
QApplication概要¶
属性¶
applicationDisplayNameᅟ- 此应用程序的用户可见名称desktopFileNameᅟ- 此应用程序的桌面条目的基本名称layoutDirectionᅟ- 此应用程序的默认布局方向platformNameᅟ- 底层平台插件的名称primaryScreenᅟ- 应用程序的主屏幕(或默认屏幕)quitOnLastWindowClosedᅟ- 当最后一个窗口关闭时,应用程序是否隐式退出windowIconᅟ- 默认窗口图标
方法¶
def
__init__()def
exec_()def
sessionId()def
sessionKey()def
setBadgeNumber()
信号¶
def
fontChanged()def
paletteChanged()def
screenAdded()def
screenRemoved()
静态函数¶
def
allWindows()def
clipboard()def
focusObject()def
focusWindow()def
font()def
inputMethod()def
isLeftToRight()def
isRightToLeft()def
modalWindow()def
mouseButtons()def
overrideCursor()def
palette()def
platformName()def
primaryScreen()def
screenAt()def
screens()def
setFont()def
setPalette()def
setWindowIcon()def
styleHints()def
sync()def
topLevelAt()def
windowIcon()
注意
本文档可能包含从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。在撰写本文时,支持以下平台插件名称:androidcocoa是 macOS 的一个平台插件。directfbeglfs是一个平台插件,用于在没有实际窗口系统(如 X11 或 Wayland)的情况下,在 EGL 和 OpenGL ES 2.0 上运行 Qt5 应用程序。有关更多信息,请参阅 EGLFS。ios(也用于 tvOS)linuxfb直接写入帧缓冲器。有关更多信息,请参阅 LinuxFB。minimal是提供给希望编写自己的平台插件的开发者的示例。然而,您可以使用该插件在没有GUI的环境中运行GUI应用程序,例如服务器。minimalegl是一个示例插件。offscreenqnxwindowswayland是一个用于 Wayland 显示服务器协议的平台插件,用于某些 Linux 桌面和嵌入式系统。xcb是 X11 窗口系统的一个插件,用于某些桌面 Linux 平台。
注意
在没有
QGuiApplication的情况下调用此函数将返回默认的平台名称(如果可用)。默认平台名称不受-platform命令行选项或QT_QPA_PLATFORM环境变量的影响。有关嵌入式Linux设备的平台插件的更多信息,请参阅Qt for Embedded Linux。
- Access functions:
此属性保存应用程序的主屏幕(或默认屏幕)。
这将是QWindows最初显示的屏幕,除非另有说明。
primaryScreenChanged 信号在 Qt 5.6 中引入。
另请参阅
- Access functions:
- property quitOnLastWindowClosedᅟ: bool¶
此属性控制当最后一个窗口关闭时,应用程序是否隐式退出。
默认是
true。如果此属性为
true,应用程序将在最后一个可见的主窗口(即没有临时父窗口的顶级窗口)关闭时尝试退出。请注意,尝试退出并不一定会导致应用程序退出,例如如果仍然存在活动的QEventLoopLocker实例,或者QEvent::Quit事件被忽略。
另请参阅
- Access functions:
此属性保存默认窗口图标。
另请参阅
setIcon()设置 应用程序 图标- Access functions:
- __init__()¶
- __init__(arguments)
- Parameters:
arguments – 字符串列表
返回应用程序中所有窗口的列表。
如果没有窗口,列表为空。
另请参阅
- static applicationDisplayName()¶
- Return type:
字符串
属性
applicationDisplayNameᅟ的获取器。- applicationDisplayNameChanged()¶
属性
applicationDisplayNameᅟ的通知信号。- static applicationState()¶
- Return type:
返回应用程序的当前状态。
您可以响应应用程序状态的变化来执行操作,例如停止/恢复CPU密集型任务、释放/加载资源或保存/恢复应用程序数据。
- applicationStateChanged(state)¶
- Parameters:
状态 –
ApplicationState
当应用程序的
state发生变化时,会发出此信号。另请参阅
- static clipboard()¶
- Return type:
- commitDataRequest(sessionManager)¶
- Parameters:
sessionManager –
QSessionManager
此信号处理会话管理。当
QSessionManager希望应用程序提交其所有数据时,会发出此信号。通常这意味着在获得用户许可后保存所有打开的文件。此外,您可能希望提供一种方式,让用户可以取消关机。
你不应该在这个信号内退出应用程序。相反,会话管理器可能会或可能不会在此之后执行此操作,具体取决于上下文。
警告
在此信号中,除非您向
manager请求明确许可,否则无法进行用户交互。有关详细信息和示例用法,请参见allowsInteraction()和allowsErrorInteraction()。注意
在连接到此信号时,您应该使用Qt::DirectConnection。
另请参阅
isSessionRestored()sessionId()saveStateRequest()Session 管理- static desktopFileName()¶
- Return type:
字符串
另请参阅
属性
desktopFileNameᅟ的获取器。- static desktopSettingsAware()¶
- Return type:
布尔
- devicePixelRatio()¶
- Return type:
浮点数
返回系统中找到的最高屏幕设备像素比。这是物理像素与设备无关像素之间的比率。
仅当您不知道目标窗口时使用此函数。如果您知道目标窗口,请改用
devicePixelRatio()。另请参阅
- exec_()¶
- Return type:
整数
返回当前活动窗口中的QObject,该对象将成为与焦点相关的事件(如键盘事件)的最终接收者。
当与焦点相关的事件的最终接收者发生变化时,会发出此信号。
focusObject是新的接收者。另请参阅
返回接收与焦点相关的事件(如键盘事件)的
QWindow。另请参阅
当焦点窗口发生变化时,会发出此信号。
focusWindow是新的焦点窗口。另请参阅
请处理 QEvent::ApplicationFontChange 事件。
当应用程序的
font发生变化时,会发出此信号。请改用QEvent::ApplicationFontChanged。另请参阅
- fontDatabaseChanged()¶
当可用字体发生变化时,会发出此信号。
当应用程序字体被添加或删除时,或者当系统字体发生变化时,可能会发生这种情况。
- static highDpiScaleFactorRoundingPolicy()¶
- Return type:
- static inputMethod()¶
- Return type:
- 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:
返回键盘上修饰键的当前状态。当前状态会同步更新,因为事件队列会清空那些会自发改变键盘状态的事件(QEvent::KeyPress 和 QEvent::KeyRelease 事件)。
需要注意的是,这可能不会反映调用时输入设备上实际按下的键,而是上述事件中最后报告的修饰键。如果没有按下任何键,则返回 Qt::NoModifier。
- lastWindowClosed()¶
当最后一个可见的主窗口(即没有临时父窗口的顶层窗口)关闭时,此信号从
exec()发出。默认情况下,
QGuiApplication在发出此信号后退出。可以通过将quitOnLastWindowClosed设置为false来关闭此功能。- static layoutDirection()¶
- Return type:
另请参阅
属性
layoutDirectionᅟ的获取器。- layoutDirectionChanged(direction)¶
- Parameters:
方向 –
LayoutDirection
属性
layoutDirectionᅟ的通知信号。返回最近显示的模态窗口。如果没有可见的模态窗口,此函数返回零。
模态窗口是一个将其
modality属性设置为Qt::WindowModal或Qt::ApplicationModal的窗口。在用户继续程序的其他部分之前,必须关闭模态窗口。模态窗口以堆栈形式组织。此函数返回堆栈顶部的模态窗口。
另请参阅
- static mouseButtons()¶
- Return type:
MouseButton的组合
返回鼠标按钮的当前状态。当前状态会同步更新,因为事件队列会清空那些会自发改变鼠标状态的事件(QEvent::MouseButtonPress 和 QEvent::MouseButtonRelease 事件)。
需要注意的是,这可能不会反映调用时输入设备上实际按下的按钮,而是反映上述事件中最后报告的鼠标按钮。如果没有按下任何鼠标按钮,则返回Qt::NoButton。
另请参阅
- nativeInterface()¶
- Return type:
对象
返回活动的应用程序覆盖光标。
如果没有定义应用程序游标(即内部游标堆栈为空),此函数将返回
None。处理 QEvent::ApplicationPaletteChange 代替。
当应用程序的
palette发生变化时,会发出此信号。请改用QEvent::ApplicationPaletteChanged。另请参阅
- static platformFunction(function)¶
- Parameters:
函数 –
QByteArray- Return type:
QFunctionPointer
- static platformName()¶
- Return type:
字符串
属性
platformNameᅟ的获取器。属性
primaryScreenᅟ的获取器。属性
primaryScreenᅟ的通知信号。- static queryKeyboardModifiers()¶
- Return type:
查询并返回键盘上修饰键的状态。与
keyboardModifiers不同,此方法返回调用方法时输入设备上实际按下的键。它不依赖于此进程接收到的按键事件,这使得在移动窗口时检查修饰键成为可能。请注意,在大多数情况下,您应该使用
keyboardModifiers(),因为它更快且更准确,因为它包含了当前处理的事件接收时修饰键的状态。另请参阅
- static quitOnLastWindowClosed()¶
- Return type:
布尔
属性
quitOnLastWindowClosedᅟ的获取器。- static restoreOverrideCursor()¶
撤销最后一个
setOverrideCursor()。如果
setOverrideCursor()被调用了两次,调用restoreOverrideCursor()将激活第一个设置的光标。再次调用此函数将恢复原始小部件的光标。- saveStateRequest(sessionManager)¶
- Parameters:
sessionManager –
QSessionManager
此信号处理会话管理。当
session manager希望应用程序为未来的会话保存其状态时,会调用此信号。例如,文本编辑器会创建一个临时文件,其中包含其编辑缓冲区的当前内容、光标位置以及当前编辑会话的其他方面。
你不应该在这个信号内退出应用程序。相反,会话管理器可能会或可能不会在此之后执行此操作,具体取决于上下文。此外,大多数会话管理器很可能在应用程序启动后立即请求保存状态。这允许会话管理器了解应用程序的重启策略。
警告
在此信号中,除非您向
manager请求明确许可,否则无法进行用户交互。详情请参见allowsInteraction()和allowsErrorInteraction()。注意
在连接到此信号时,您应该使用Qt::DirectConnection。
另请参阅
isSessionRestored()sessionId()commitDataRequest()Session Management每当系统添加了新屏幕
screen时,就会发出此信号。返回位于
point处的屏幕,如果位于任何屏幕之外则返回None。point与每组虚拟兄弟的 virtualGeometry() 相关。如果该点映射到多个虚拟兄弟组,则返回第一个匹配项。如果您希望仅搜索已知屏幕的虚拟桌面兄弟(例如,您的应用程序窗口屏幕的兄弟QWidget::windowHandle()->screen()),请使用virtualSiblingAt()。每当从系统中移除一个
screen时,都会发出此信号。它提供了一个机会来管理屏幕上的窗口,然后Qt才会将它们移动到主屏幕。返回与应用程序连接的窗口系统关联的所有屏幕的列表。
- 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ᅟ的设置器。- static setDesktopSettingsAware(on)¶
- Parameters:
on – 布尔值
- static setHighDpiScaleFactorRoundingPolicy(policy)¶
- Parameters:
- static setLayoutDirection(direction)¶
- Parameters:
方向 –
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 setQuitOnLastWindowClosed(quit)¶
- Parameters:
quit – 布尔值
属性
quitOnLastWindowClosedᅟ的设置器。属性
windowIconᅟ的设置器。- static styleHints()¶
- Return type:
- static sync()¶
返回给定位置
pos的顶层窗口(如果有的话)。返回应用程序中的顶级窗口列表。
另请参阅
- static windowIcon()¶
- Return type:
另请参阅
属性
windowIconᅟ的获取器。