class QApplication#

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

Inheritance diagram of PySide6.QtWidgets.QApplication

概要

属性

方法#

槽函数#

信号#

静态函数#

注意

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

详细描述#

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

QApplication类专门用于扩展QGuiApplication,以便为基于QWidget的应用程序提供所需的功能。它处理小部件特定的初始化和最终化。

对于任何使用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())

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

QApplication的主要职责包括

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()。

另请参阅

QCoreApplication,QAbstractEventDispatcher,QEventLoop,QSettings

注意

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

属性autoSipEnabled: bool#

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

将此属性设置为true可自动在进入接受键盘输入的小部件时显示SIP。此属性仅影响已设置WA_InputMethodEnabled属性的控件,通常用于在几乎没有键的设备上启动虚拟键盘。

此属性仅影响使用软件输入板的平台。

默认值取决于平台。

访问函数
属性cursorFlashTime: int#

此属性用于存储文本光标的闪烁(闪烁)时间(以毫秒为单位)。

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

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

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

注意

此属性可能保留负值,例如如果禁用光标闪烁。

访问函数
属性doubleClickInterval: int#

此属性包含以毫秒为单位的时间限制,区别双击与连续两次鼠标点击。

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

访问函数
属性 keyboardInputIntervalᅟ: int#

此属性包含以毫秒为单位的时间限制,以区分按键与连续两次按键。

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

访问函数
属性 startDragDistanceᅟ: int#

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

此属性包含启动拖放操作所需的最小距离。

如果您想在您的应用程序中支持拖放,并希望在用户按下按钮并移动鼠标光标到一定距离后开始拖放操作,您应使用此属性的值作为所需的最小距离。

例如,如果点击的鼠标位置存储在 startPos 中,而当前位置(例如鼠标移动事件中)是 currentPos,则可以使用类似这样的代码确定是否应该开始拖放

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

Qt在生产中使用此值,例如在 QFileDialog 中。

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

另请参阅

startDragTime() Drag and Drop

访问函数
属性 startDragTimeᅟ: int#

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

如果您想在您的应用程序中支持拖放,并希望在用户按下鼠标按钮一段时间后开始拖放操作,您应使用此属性的值作为延迟。

Qt在生产中也使用这个延迟,例如在 QTextEditQLineEdit 中,用于启动拖放。

默认值是500毫秒。

另请参阅

startDragDistance() Drag and Drop

访问函数
属性 styleSheetᅟ: str#

该属性包含应用程序样式表。

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

另请参阅

setStyle() Qt样式表

访问函数
property wheelScrollLines: int#

该属性存储在鼠标滚轮旋转时,要滚动的行数。

如果该值超过部件的可见行数,则部件应将滚动操作解释为单个向上转页向下转页。如果部件是项目 视图 ,则滚动一行所产生的结果取决于部件的滚动 模式设置。滚动一行可以表示滚动 一个 项目滚动 一个 像素

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

另请参阅

wheelScrollLines()

访问函数
__init__(arg__1)#
参数:

arg__1 – 字符串列表

__init__()
static aboutQt()#

显示有关Qt的简单信息框。信息包括应用程序使用的Qt版本号。

这在应用程序的帮助菜单中很有用,如在菜单示例中所示。

这是aboutQt()的便利槽。

static activeModalWidget()#
返回类型:

QWidget

返回活动的模态部件。

模式窗口小部件是一种特殊的顶层小部件,它是QDialog的子类,其构造函数指定了模式参数为true。模式窗口小部件必须在使用程序的其他部分之前关闭。

模式窗口小部件以堆栈形式组织。此函数返回堆栈顶部的活动模式窗口小部件。

staticactivePopupWidget()#
返回类型:

QWidget

返回活动弹出窗口小部件。

弹出窗口小部件是一种特殊的顶层小部件,设置Qt::WType_Popup窗口小部件标志,例如QMenu小部件。当应用程序打开弹出窗口小部件时,所有事件都被发送到弹出窗口。在关闭弹出窗口小部件之前,无法访问正常窗口小部件和模式窗口小部件。

当弹出窗口小部件显示时,只能打开其他弹出窗口小部件。弹出窗口小部件以堆栈形式组织。此函数返回堆栈顶部的活动弹出窗口小部件。

staticactiveWindow()#
返回类型:

QWidget

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

staticalert(widget[, duration=0])#
参数:
  • widgetQWidget

  • duration – int

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

目前,在嵌入式Linux的Qt中,此函数没有任何作用。

在macOS上,此功能主要在应用程序级别工作,将导致应用程序图标在坞站中弹跳。

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

在X11上,这会导致窗口被标记为“需要您的注意”,为了使此功能生效,窗口不得被隐藏(即不要在其上调用 hide()`,而要以某种方式可见)。

静态 allWidgets()#
返回类型:

. QWidget 列表

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

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

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

注意

一些小部件可能被隐藏。

示例

def updateAllWidgets():

    allWidgets = QApplication.allWidgets()
    for widget in allWidgets:
        widget.update()
autoSipEnabled()#
返回类型:

布尔值

另请参阅

setAutoSipEnabled()

属性 autoSipEnabled 的获取器。

静态 beep()#

使用默认音量和声音响铃。此函数在 Qt for Embedded Linux 中不可用。

静态 closeAllWindows()#

关闭所有顶层窗口。

此函数对于具有许多顶层窗口的应用程序尤其有用。

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

静态cursorFlashTime()#
返回类型:

int

另请参阅

setCursorFlashTime()

属性 cursorFlashTime 的获取器。

静态doubleClickInterval()#
返回类型:

int

属性 doubleClickInterval 的获取器。

exec_()#
返回类型:

int

focusChanged(old, now)#
参数:

当控件焦点从 old 变到 now 时发出信号,即用户按下了制表键,点击到控件或切换了活动窗口。两个 oldnow 都可以是 None

信号在通过 QFocusEvent 通知两个控件变化后发出。

另请参阅

setFocus() clearFocus() FocusReason

静态focusWidget()#
返回类型:

QWidget

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

static font(arg__1)#
参数:

arg__1QWidget

返回类型:

QFont

这是一个重载函数。

返回widget的默认字体。如果未为widget的类注册默认字体,则返回其最近注册的父类的默认字体。

static font(className)
参数:

className – 字符串

返回类型:

QFont

这是一个重载函数。

返回给定className的widget的字体。

另请参阅

setFont() font()

static fontMetrics()#
返回类型:

QFontMetrics

注意

此功能已弃用。

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

static isEffectEnabled(arg__1)#
参数:

arg__1UIEffect

返回类型:

布尔值

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

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

注意

小于 16 位颜色深度运行的屏幕上的所有效果都被禁用。

另请参阅

setEffectEnabled() UIEffect

静态 keyboardInputInterval()#
返回类型:

int

属性 keyboardInputIntervalᅟ 的获取器。

静态 palette(arg__1)#
参数:

arg__1QWidget

返回类型:

QPalette

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

另请参阅

setPalette() palette()

静态 palette(className)
参数:

className – 字符串

返回类型:

QPalette

这是一个重载函数。

返回给定 className 的 widget 的调色板。

另请参阅

setPalette() palette()

静态 setActiveWindow(act)#
参数:

actQWidget

注意

此功能已弃用。

请使用 activateWindow() 代替。

在响应系统事件时将活动窗口设置为 active widget。此函数由平台特定的事件处理程序调用。

警告

此函数 不会 将键盘焦点设置到活动 widget。请使用 activateWindow() 代替。

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

setAutoSipEnabled(enabled)#
参数:

enabled – bool

另请参阅

autoSipEnabled()

属性 autoSipEnabledᅟ 的设置器。

静态setCursorFlashTime(arg__1)#
参数:

arg__1 – int

另请参阅

cursorFlashTime()

属性 cursorFlashTimeᅟ 的设置器。

静态setDoubleClickInterval(arg__1)#
参数:

arg__1 – int

另请参阅

doubleClickInterval()

属性 doubleClickIntervalᅟ 的设置器。

静态setEffectEnabled(arg__1[, enable=true])#
参数:

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

注意

小于 16 位颜色深度运行的屏幕上的所有效果都被禁用。

另请参阅

isEffectEnabled() UIEffectsetDesktopSettingsAware()

静态setFont(arg__1[, className=None])#
参数:
  • arg__1QFont

  • className – 字符串

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

在应用程序启动时,默认字体取决于窗口系统。它可能因窗口系统版本和区域设置而异。此功能允许您覆盖默认字体;但是,覆盖可能不是一个好主意,因为例如,一些区域设置需要较大字体以支持它们特殊字符。

警告

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

另请参阅

font() fontMetrics() setFont()

静态 setKeyboardInputInterval(arg__1)#
参数:

arg__1 – int

属性 keyboardInputIntervalᅟ 的设置器。

静态 setPalette(arg__1[className=None])#
参数:
  • arg__1QPalette

  • className – 字符串

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

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

可以根据 polish() 中的当前GUI样式更改调色板。

警告

不要与此功能联用Qt样式表。使用样式表时,可以使用“颜色”、“背景颜色”、“选择颜色”、“选择背景颜色”和“交替背景颜色”自定义控件的调色板。

注意

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

另请参阅

setPalette() palette() polish()

static setStartDragDistance(l)#
参数:

l – int

另请参阅

startDragDistance()

属性 startDragDistance 的设置器。

static setStartDragTime(ms)#
参数:

ms – int

另请参阅

startDragTime()

属性 startDragTime 的设置器。

static setStyle(arg__1)#
参数:

arg__1QStyle

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

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

示例用法

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

在切换应用程序样式时,颜色调色板将重新设置为初始颜色或系统默认颜色。这是必要的,因为某些样式必须适应颜色调色板以完全符合样式指南。

在设置调色板之前设置样式,即,在创建 QApplication 之前,将导致应用程序使用 QStyle 的标准调色板。

警告

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

static setStyle(arg__1)
参数:

arg__1 – str

返回类型:

QStyle

这是一个重载函数。

QStylestyle 中请求 QStyleFactory 对象。

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

如果没有提供未知 style,则返回 None,否则返回的 QStyle 对象将被设置为应用程序的 GUI 风格。

警告

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

setStyleSheet(sheet)
参数:

sheet – str

另请参阅

styleSheet()

设置属性 styleSheetᅟ

static setWheelScrollLines(arg__1)
参数:

arg__1 – int

另请参阅

wheelScrollLines()

设置属性 wheelScrollLinesᅟ

static startDragDistance()
返回类型:

int

另请参阅

setStartDragDistance()

属性 startDragDistanceᅟ 的获取器。

static startDragTime()
返回类型:

int

另请参阅

setStartDragTime()

属性 startDragTimeᅟ 的获取器。

static style()
返回类型:

QStyle

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

另请参阅

setStyle() QStyle

styleSheet()
返回类型:

str

另请参阅

setStyleSheet()

属性 styleSheetᅟ 的获取器。

static topLevelAt(x, y)#
参数:
  • x – int

  • y – int

返回类型:

QWidget

这是一个重载函数。

返回点(xy)处的顶级部件;如果没有这样的部件则返回0。

static topLevelWidgets()#
返回类型:

. QWidget 列表

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

返回应用中所有顶级部件(窗口)的列表。

注意

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

示例

def showAllHiddenTopLevelWidgets():

    topLevelWidgets = QApplication.topLevelWidgets()
    for widget in topLevelWidgets:
        if widget.isHidden():
            widget.show()
static wheelScrollLines()#
返回类型:

int

另请参阅

setWheelScrollLines()

属性 wheelScrollLines 的获取器。

static widgetAt(p)#
参数:

pQPoint

返回类型:

QWidget

返回全局屏幕位置 point 处的部件,如果没有在此处找到 Qt 部件则返回 None

此函数可能很慢。

static widgetAt(x, y)
参数:
  • x – int

  • y – int

返回类型:

QWidget

这是一个重载函数。

返回全局屏幕位置 (xy) 处的部件,如果没有在此处找到 Qt 部件则返回 None