PySide6.QtWidgets.QApplication

class QApplication

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

PySide6.QtWidgets.QApplication 的继承图

概要

属性

方法

插槽

信号

静态函数

注意

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

详细描述

警告

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

QApplication 通过一些基于 QWidget 的应用程序所需的功能来专门化 QGuiApplication。它处理小部件特定的初始化和终止。

对于任何使用Qt的GUI应用程序,无论应用程序在任何给定时间有0、1、2个或更多窗口,都精确地有一个 QApplication 对象。对于非基于 QWidget 的Qt应用程序,请改用QGuiApplication,因为它不依赖于 QtWidgets 库。

一些GUI应用程序提供了一种特殊的批处理模式,即提供命令行参数以在没有人工干预的情况下执行任务。在这种非GUI模式下,通常只需实例化一个普通的QCoreApplication即可,以避免不必要地初始化图形用户界面所需的资源。以下示例展示了如何动态创建适当类型的应用程序实例:

QCoreApplication* createApplication(int argc, char *argv[])

    for i in range(1, argc):
        if not qstrcmp(argv[i], "-no-gui"):
            return QCoreApplication(argc, argv)

    return QApplication(argc, argv)

if __name__ == "__main__":

app = QScopedPointer(createApplication(argc, argv))
    if QApplication(app.data()):
       # start GUI version...
    else:
       # start non-GUI version...

    sys.exit(app.exec())

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

QApplication 的主要职责领域是:

  • 它使用用户的桌面设置初始化应用程序,例如palette()font()doubleClickInterval()。它会跟踪这些属性,以防用户全局更改桌面设置,例如通过某种控制面板。

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

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

  • 它定义了应用程序的外观和感觉,这些被封装在一个QStyle对象中。这可以在运行时通过setStyle()进行更改。

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

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

  • 它知道应用程序的窗口。你可以使用widgetAt()询问某个位置的部件,获取topLevelWidgets()的列表和closeAllWindows()等。

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

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

函数组

系统设置

desktopSettingsAware(), setDesktopSettingsAware(), cursorFlashTime() , setCursorFlashTime() , doubleClickInterval() , setDoubleClickInterval() , setKeyboardInputInterval() , wheelScrollLines() , setWheelScrollLines() , palette() , setPalette() , font() , setFont() , fontMetrics().

事件处理

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

GUI 样式

style() , setStyle() .

文本处理

installTranslator(), removeTranslator() translate().

小部件

allWidgets() , topLevelWidgets() , activePopupWidget() , activeModalWidget() , clipboard(), focusWidget() , activeWindow() , widgetAt() .

高级光标处理

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

杂项

closeAllWindows() , startingUp(), closingDown().

另请参阅

QCoreApplicationQAbstractEventDispatcherQEventLoopQSettings

注意

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

property autoSipEnabledᅟ: bool

此属性用于切换自动SIP(软件输入面板)的可见性。

将此属性设置为true以在进入接受键盘输入的小部件时自动显示SIP。此属性仅影响设置了WA_InputMethodEnabled属性的小部件,通常用于在按键很少或没有按键的设备上启动虚拟键盘。

该属性仅在使用软件输入面板的平台上有效。

默认值取决于平台。

Access functions:
property cursorFlashTimeᅟ: int

此属性保存文本光标的闪烁(眨眼)时间,单位为毫秒。

闪烁时间是显示、反转和恢复光标显示所需的时间。通常文本光标会显示一半的光标闪烁时间,然后隐藏相同的时间,但这可能会有所不同。

在X11上的默认值是1000毫秒。在Windows上,使用控制面板的值,并且设置此属性会为所有应用程序设置光标闪烁时间。

我们建议小部件不要缓存此值,因为如果用户更改全局桌面设置,它可能随时更改。

注意

此属性可能包含负值,例如如果光标闪烁被禁用。

Access functions:
property doubleClickIntervalᅟ: int

此属性以毫秒为单位保存时间限制,用于区分双击和两次连续的鼠标点击。

X11上的默认值是400毫秒。在Windows和Mac OS上,使用操作系统的值。

Access functions:
property keyboardInputIntervalᅟ: int

此属性以毫秒为单位保存时间限制,用于区分一次按键和两次连续按键。

X11上的默认值是400毫秒。在Windows和Mac OS上,使用操作系统的值。

Access functions:
property startDragDistanceᅟ: int

警告

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

此属性保存拖动操作开始所需的最小距离。

如果您的应用程序支持拖放操作,并且希望在用户按住按钮移动光标一定距离后开始拖放操作,您应该将此属性的值用作所需的最小距离。

例如,如果点击的鼠标位置存储在 startPos 中,而当前位置(例如在鼠标移动事件中)是 currentPos,你可以通过如下代码判断是否应该开始拖动:

if ((startPos - currentPos).manhattanLength() >=
        QApplication.startDragDistance())
    startTheDrag()

Qt 在内部使用此值,例如在 QFileDialog 中。

默认值(如果平台没有提供不同的默认值)是10像素。

另请参阅

startDragTime() manhattanLength()拖拽 放置

Access functions:
property startDragTimeᅟ: int

此属性表示在开始拖放操作之前,鼠标按钮必须按下的时间(以毫秒为单位)。

如果您的应用程序支持拖放功能,并且希望在用户按住鼠标按钮一定时间后开始拖放操作,您应该使用此属性的值作为延迟。

Qt 在内部也使用这种延迟,例如在 QTextEditQLineEdit 中,用于启动拖动操作。

默认值为500毫秒。

另请参阅

startDragDistance() 拖拽 放置

Access functions:
property styleSheetᅟ: str

此属性保存应用程序样式表。

默认情况下,此属性返回一个空字符串,除非用户在运行应用程序时在命令行上指定了-stylesheet选项。

另请参阅

setStyle() Qt 样式表

Access functions:
property wheelScrollLinesᅟ: int

此属性保存当鼠标滚轮旋转时,小部件要滚动的行数。

如果值超过小部件的可见行数,小部件应将滚动操作解释为单个向上翻页向下翻页。如果小部件是item view class,则滚动一的结果取决于小部件的scroll mode设置。滚动一可以意味着scroll one itemscroll one pixel

默认情况下,此属性的值为3。

另请参阅

wheelScrollLines()

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

arguments – 字符串列表

static aboutQt()

显示一个关于Qt的简单消息框。消息包括应用程序使用的Qt版本号。

这对于包含在应用程序的帮助菜单中非常有用,如菜单示例所示。

此函数是aboutQt()的便捷插槽。

static activeModalWidget()
Return type:

QWidget

返回活动的模态小部件。

模态小部件是一种特殊的顶层小部件,它是QDialog的子类,并将构造函数的模态参数指定为true。在用户继续程序的其他部分之前,必须关闭模态小部件。

模态小部件被组织在一个堆栈中。此函数返回堆栈顶部的活动模态小部件。

static activePopupWidget()
Return type:

QWidget

返回活动的弹出小部件。

弹出窗口小部件是一个特殊的顶级小部件,它设置了Qt::WType_Popup小部件标志,例如QMenu小部件。当应用程序打开一个弹出窗口小部件时,所有事件都会发送到弹出窗口。在弹出窗口小部件关闭之前,无法访问普通小部件和模态小部件。

当弹出窗口部件显示时,只能打开其他弹出窗口部件。弹出窗口部件组织在一个堆栈中。此函数返回堆栈顶部的活动弹出窗口部件。

static activeWindow()
Return type:

QWidget

返回具有键盘输入焦点的应用程序顶层窗口,如果没有应用程序窗口具有焦点,则返回None。即使没有focusWidget(),也可能存在activeWindow(),例如,如果该窗口中的任何小部件都不接受键盘事件。

static alert(widget[, duration=0])
Parameters:
  • widgetQWidget

  • duration – int

如果窗口不是活动窗口,则显示widget的警报。警报显示msec毫秒。如果msec为零(默认值),则警报将无限期显示,直到窗口再次变为活动状态。

目前这个函数在Qt for Embedded Linux上没有任何作用。

在macOS上,这更多是在应用程序级别工作,并会导致应用程序图标在dock中弹跳。

在Windows上,这会导致窗口的任务栏条目闪烁一段时间。如果msec为零,闪烁将停止,任务栏条目将变为不同的颜色(当前为橙色)。

在X11上,这会导致窗口被标记为“需要关注”,窗口不能被隐藏(即不能对其调用hide(),但必须以某种方式可见)才能使此功能生效。

static allWidgets()
Return type:

.列表的 QWidget

警告

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

返回应用程序中所有小部件的列表。

如果没有小部件,列表为空(QList::isEmpty())。

注意

一些小部件可能被隐藏。

示例:

def updateAllWidgets():

    allWidgets = QApplication.allWidgets()
    for widget in allWidgets:
        widget.update()
autoSipEnabled()
Return type:

布尔

另请参阅

setAutoSipEnabled()

属性 autoSipEnabledᅟ 的获取器。

static beep()

敲响铃声,使用默认音量和声音。该功能在Qt for Embedded Linux中不可用

static closeAllWindows()

关闭所有顶层窗口。

此函数对于具有许多顶级窗口的应用程序特别有用。

窗口以随机顺序关闭,直到一个窗口不接受关闭事件。当最后一个窗口成功关闭时,应用程序退出,除非将quitOnLastWindowClosed设置为false。要从例如菜单触发应用程序终止,请使用QCoreApplication::quit()而不是此函数。

static cursorFlashTime()
Return type:

整数

另请参阅

setCursorFlashTime()

属性 cursorFlashTimeᅟ 的获取器。

static doubleClickInterval()
Return type:

整数

属性 doubleClickIntervalᅟ 的获取器。

exec_()
Return type:

整数

focusChanged(old, now)
Parameters:

当具有键盘焦点的窗口小部件从old更改为now时,会发出此信号,即因为用户按下了Tab键、点击了窗口小部件或更改了活动窗口。oldnow都可以是None

信号在小部件通过QFocusEvent接收到更改通知后发出。

另请参阅

setFocus() clearFocus() FocusReason

static focusWidget()
Return type:

QWidget

返回具有键盘输入焦点的应用程序小部件,如果此应用程序中没有小部件具有焦点,则返回None

static font(widget)
Parameters:

widgetQWidget

Return type:

QFont

这是一个重载函数。

返回widget的默认字体。如果widget的类没有注册默认字体,则返回其最近注册的超类的默认字体。

static font(className)
Parameters:

className – str

Return type:

QFont

这是一个重载函数。

返回给定className的小部件的字体。

另请参阅

setFont() font()

static fontMetrics()
Return type:

QFontMetrics

注意

此函数已弃用。

请改用 QFontMetricsF 构造函数。返回应用程序字体的显示(屏幕)字体度量。

static isEffectEnabled(effect)
Parameters:

效果UIEffect

Return type:

布尔

如果 effect 已启用,则返回 true;否则返回 false

默认情况下,Qt 会尝试使用桌面设置。为了防止这种情况,可以调用 setDesktopSettingsAware(false)。

注意

所有效果在运行于低于16位色深的屏幕上时将被禁用。

另请参阅

setEffectEnabled() UIEffect

static keyboardInputInterval()
Return type:

整数

属性 keyboardInputIntervalᅟ 的获取器。

static palette(widget)
Parameters:

widgetQWidget

Return type:

QPalette

如果传递了一个widget,则返回该小部件类的默认调色板。这可能是也可能不是应用程序的调色板。在大多数情况下,某些类型的小部件没有特殊的调色板,但一个显著的例外是Windows下的弹出菜单,如果用户在显示设置中为菜单定义了特殊的背景颜色。

另请参阅

setPalette() palette()

static palette(className)
Parameters:

className – str

Return type:

QPalette

这是一个重载函数。

返回给定className的小部件的调色板。

另请参阅

setPalette() palette()

static setActiveWindow(act)
Parameters:

actQWidget

注意

此函数已弃用。

请使用 activateWindow() 代替。

将活动窗口设置为响应系统事件的active小部件。该函数从平台特定的事件处理程序中调用。

警告

此函数不会将键盘焦点设置到活动小部件上。请改为调用activateWindow()

它设置了activeWindow()focusWidget()属性,并向所有适当的部件发送适当的WindowActivate/WindowDeactivate和FocusIn/FocusOut事件。然后窗口将以活动状态绘制(例如,行编辑中的光标将闪烁),并且将启用工具提示。

setAutoSipEnabled(enabled)
Parameters:

enabled – 布尔值

另请参阅

autoSipEnabled()

属性 autoSipEnabledᅟ 的设置器。

static setCursorFlashTime(arg__1)
Parameters:

arg__1 – 整数

另请参阅

cursorFlashTime()

属性 cursorFlashTimeᅟ 的设置器。

static setDoubleClickInterval(arg__1)
Parameters:

arg__1 – 整数

另请参阅

doubleClickInterval()

属性 doubleClickIntervalᅟ 的设置器。

static setEffectEnabled(effect[, enable=true])
Parameters:
  • 效果UIEffect

  • enable – 布尔值

如果 enable 为 true,则启用 UI 效果 effect,否则将不使用该效果。

注意

所有效果在运行于低于16位色深的屏幕上时将被禁用。

另请参阅

isEffectEnabled() UIEffectsetDesktopSettingsAware()

static setFont(font[, className=None])
Parameters:
  • 字体QFont

  • className – str

将默认的应用程序字体更改为font。如果传递了className,则更改仅适用于继承className的类(由QObject::inherits()报告)。

在应用程序启动时,默认字体取决于窗口系统。它可能会根据窗口系统版本和区域设置而变化。此函数允许您覆盖默认字体;但覆盖可能不是一个好主意,因为例如,某些区域设置需要超大字体来支持其特殊字符。

警告

不要将此函数与Qt样式表一起使用。应用程序的字体可以使用“font”样式表属性进行自定义。要为所有QPushButton设置粗体字体,请将应用程序的styleSheet()设置为“QPushButton { font: bold }”

static setKeyboardInputInterval(arg__1)
Parameters:

arg__1 – 整数

属性 keyboardInputIntervalᅟ 的设置器。

static setPalette(palette[, className=None])
Parameters:
  • 调色板QPalette

  • className – str

将应用程序的调色板更改为 palette

如果传递了className,则更改仅适用于继承className的小部件(如QObject::inherits()所报告的)。如果className留空为0,则更改会影响所有小部件,从而覆盖任何先前设置的特定类调色板。

调色板可以根据当前GUI风格在polish()中更改。

警告

不要将此函数与Qt样式表一起使用。使用样式表时,可以使用“color”、“background-color”、“selection-color”、“selection-background-color”和“alternate-background-color”来自定义小部件的调色板。

注意

某些样式并不使用调色板进行所有绘制,例如,如果它们使用了原生主题引擎。Windows Vista 和 macOS 样式就是这种情况。

static setStartDragDistance(l)
Parameters:

l – 整数

另请参阅

startDragDistance()

属性 startDragDistanceᅟ 的设置器。

static setStartDragTime(ms)
Parameters:

ms – 整数

另请参阅

startDragTime()

属性 startDragTimeᅟ 的设置器。

static setStyle(style)
Parameters:

样式QStyle

警告

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

将应用程序的GUI样式设置为style。样式对象的所有权转移给QApplication,因此QApplication将在应用程序退出或设置新样式且旧样式仍然是应用程序对象的父对象时删除样式对象。

示例用法:

QApplication.setStyle(QStyleFactory.create("Fusion"))

当切换应用程序样式时,调色板会重置为初始颜色或系统默认值。这是必要的,因为某些样式需要调整调色板以完全符合样式指南。

在设置调色板之前设置样式,即在创建QApplication之前,将导致应用程序使用standardPalette()作为调色板。

警告

目前不支持为自定义的QStyle子类使用Qt样式表。我们计划在未来的某个版本中解决这个问题。

static setStyle(style)
Parameters:

style – str

Return type:

QStyle

这是一个重载函数。

QStyleFactory请求一个QStyle对象用于style

字符串必须是keys()之一,通常是“windows”、“windowsvista”、“fusion”或“macos”之一。样式名称不区分大小写。

如果传递了未知的style,则返回None,否则返回的QStyle对象将设置为应用程序的GUI样式。

警告

为了确保应用程序的样式设置正确,最好在QApplication构造函数之前调用此函数,如果可能的话。

setStyleSheet(sheet)
Parameters:

sheet – 字符串

另请参阅

styleSheet()

属性 styleSheetᅟ 的设置器。

static setWheelScrollLines(arg__1)
Parameters:

arg__1 – 整数

另请参阅

wheelScrollLines()

属性 wheelScrollLinesᅟ 的设置器。

static startDragDistance()
Return type:

整数

另请参阅

setStartDragDistance()

属性 startDragDistanceᅟ 的获取器。

static startDragTime()
Return type:

整数

另请参阅

setStartDragTime()

属性 startDragTimeᅟ 的获取器。

static style()
Return type:

QStyle

返回应用程序的样式对象。

另请参阅

setStyle() QStyle

styleSheet()
Return type:

字符串

另请参阅

setStyleSheet()

属性 styleSheetᅟ 的获取器。

static topLevelAt(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

QWidget

这是一个重载函数。

返回位于点 (x, y) 的顶层小部件;如果没有这样的小部件,则返回 0。

static topLevelWidgets()
Return type:

.列表的 QWidget

警告

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

返回应用程序中的顶级小部件(窗口)列表。

注意

一些顶级小部件可能会被隐藏,例如如果没有当前显示的工具提示,则工具提示可能会被隐藏。

示例:

def showAllHiddenTopLevelWidgets():

    topLevelWidgets = QApplication.topLevelWidgets()
    for widget in topLevelWidgets:
        if widget.isHidden():
            widget.show()
static wheelScrollLines()
Return type:

整数

另请参阅

setWheelScrollLines()

属性 wheelScrollLinesᅟ 的获取器。

static widgetAt(p)
Parameters:

pQPoint

Return type:

QWidget

返回位于全局屏幕位置 point 的小部件,如果该位置没有 Qt 小部件,则返回 None

这个函数可能会很慢。

static widgetAt(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

QWidget

这是一个重载函数。

返回位于全局屏幕位置 (x, y) 的小部件,如果没有 Qt 小部件在那里,则返回 None