- class QApplication#
QApplication
类管理 GUI 应用程序的流程控制和主要设置。更多…概要
属性
autoSipEnabled
- 切换自动 SIP(软件输入面板)的可见性cursorFlashTime
- 文本光标的闪烁(闪烁)时间(毫秒)doubleClickInterval
- 区分双击和连续鼠标单击的时间限制(毫秒)keyboardInputInterval
- 区分按键和连续按键的时间限制(毫秒)startDragDistance
- 开始拖放操作所需的最小距离startDragTime
- 在拖放操作开始之前,鼠标按钮必须按下的时间(毫秒)styleSheet
- 应用的样式表wheelScrollLines
- 在鼠标滚轮旋转时滚动小部件的行数
方法#
def
__init__()
def
autoSipEnabled()
def
exec_()
def
styleSheet()
槽函数#
def
setStyleSheet()
信号#
def
focusChanged()
静态函数#
def
aboutQt()
def
activeWindow()
def
alert()
def
allWidgets()
def
beep()
def
focusWidget()
def
font()
def
fontMetrics()
定义
palette()
定义
setFont()
定义
setPalette()
定义
setStyle()
定义
style()
定义
topLevelAt()
定义
widgetAt()
注意
此文档可能包含自动从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
的主要职责包括它使用用户的桌面设置初始化应用程序,例如
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()。另请参阅
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在生产中也使用这个延迟,例如在
QTextEdit
和QLineEdit
中,用于启动拖放。默认值是500毫秒。
另请参阅
startDragDistance()
Drag and Drop
- 属性 styleSheetᅟ: str#
该属性包含应用程序样式表。
默认情况下,除非用户在运行应用程序的命令行上指定了
-stylesheet
选项,否则此属性返回一个空字符串。另请参阅
- property wheelScrollLines: int#
该属性存储在鼠标滚轮旋转时,要滚动的行数。
如果该值超过部件的可见行数,则部件应将滚动操作解释为单个向上转页或向下转页。如果部件是
项目 视图 类
,则滚动一行所产生的结果取决于部件的滚动 模式
设置。滚动一行可以表示滚动 一个 项目
或滚动 一个 像素
。默认情况下,此属性的值为3。
另请参阅
- __init__(arg__1)#
- 参数:
arg__1 – 字符串列表
- __init__()
- static aboutQt()#
显示有关Qt的简单信息框。信息包括应用程序使用的Qt版本号。
这在应用程序的帮助菜单中很有用,如在菜单示例中所示。
这是
aboutQt()
的便利槽。返回活动的模态部件。
模式窗口小部件是一种特殊的顶层小部件,它是
QDialog
的子类,其构造函数指定了模式参数为true。模式窗口小部件必须在使用程序的其他部分之前关闭。模式窗口小部件以堆栈形式组织。此函数返回堆栈顶部的活动模式窗口小部件。
返回活动弹出窗口小部件。
弹出窗口小部件是一种特殊的顶层小部件,设置
Qt::WType_Popup
窗口小部件标志,例如QMenu
小部件。当应用程序打开弹出窗口小部件时,所有事件都被发送到弹出窗口。在关闭弹出窗口小部件之前,无法访问正常窗口小部件和模式窗口小部件。当弹出窗口小部件显示时,只能打开其他弹出窗口小部件。弹出窗口小部件以堆栈形式组织。此函数返回堆栈顶部的活动弹出窗口小部件。
返回具有键盘输入焦点的应用程序顶层窗口,如果没有应用程序窗口具有焦点,则返回None。即使没有
focusWidget()
,也可能存在activeWindow()
,例如,如果该窗口中的没有小部件接受按键事件。如果窗口不是活动窗口,则会为
widget
显示一个警报。警报显示msec
毫秒。如果msec
为零(默认值),则警报将无限显示,直到窗口再次变为活动状态。目前,在嵌入式Linux的Qt中,此函数没有任何作用。
在macOS上,此功能主要在应用程序级别工作,将导致应用程序图标在坞站中弹跳。
在Windows上,这会导致窗口的任务栏条目闪烁一段时间。如果
msec
为零,闪烁将停止,任务栏条目将变为不同的颜色(目前为橙色)。在X11上,这会导致窗口被标记为“需要您的注意”,为了使此功能生效,窗口不得被隐藏(即不要在其上调用 hide()`,而要以某种方式可见)。
警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
返回应用程序中所有小部件的列表。
如果没有任何小部件,列表为空(QList::isEmpty())。
注意
一些小部件可能被隐藏。
示例
def updateAllWidgets(): allWidgets = QApplication.allWidgets() for widget in allWidgets: widget.update()
- autoSipEnabled()#
- 返回类型:
布尔值
另请参阅
属性
autoSipEnabled
的获取器。- 静态 beep()#
使用默认音量和声音响铃。此函数在 Qt for Embedded Linux 中不可用。
- 静态 closeAllWindows()#
关闭所有顶层窗口。
此函数对于具有许多顶层窗口的应用程序尤其有用。
窗口会按随机顺序关闭,直到一个窗口不接受关闭事件。当最后一个窗口成功关闭时,应用程序将退出,除非将 quitOnLastWindowClosed 设置为 false。要从例如菜单触发应用程序终止,请使用 QCoreApplication::quit() 而不是此函数。
- 静态cursorFlashTime()#
- 返回类型:
int
另请参阅
属性
cursorFlashTime
的获取器。- 静态doubleClickInterval()#
- 返回类型:
int
属性
doubleClickInterval
的获取器。- exec_()#
- 返回类型:
int
当控件焦点从
old
变到now
时发出信号,即用户按下了制表键,点击到控件或切换了活动窗口。两个old
和now
都可以是None
。信号在通过 QFocusEvent 通知两个控件变化后发出。
另请参阅
setFocus()
clearFocus()
FocusReason
返回具有键盘输入焦点的应用程序控件,如果没有控件在此应用程序中具有焦点,则返回
None
。这是一个重载函数。
返回widget的默认字体。如果未为widget的类注册默认字体,则返回其最近注册的父类的默认字体。
- static font(className)
- 参数:
className – 字符串
- 返回类型:
这是一个重载函数。
返回给定
className
的widget的字体。- static fontMetrics()#
- 返回类型:
注意
此功能已弃用。
请使用QFontMetricsF构造函数代替。返回应用程序字体的显示(屏幕)字体度量。
如果
effect
被启用,则返回true
;否则返回false
。默认情况下,Qt 会尝试使用桌面设置。为了防止这种情况,请调用 setDesktopSettingsAware(false)。
- 静态 keyboardInputInterval()#
- 返回类型:
int
属性
keyboardInputIntervalᅟ
的获取器。如果传递了一个
widget
,则返回 widget 类的默认调色板。这可能是也可能不是应用程序调色板。在大多数情况下,没有为特定类型的 widget 提供特殊的调色板,但有一个值得注意的例外是 Windows 下的弹出菜单,如果用户在显示设置中为菜单定义了特殊的背景色。另请参阅
- 静态 palette(className)
- 参数:
className – 字符串
- 返回类型:
这是一个重载函数。
返回给定
className
的 widget 的调色板。另请参阅
请使用
activateWindow()
代替。在响应系统事件时将活动窗口设置为
active
widget。此函数由平台特定的事件处理程序调用。警告
此函数 不会 将键盘焦点设置到活动 widget。请使用
activateWindow()
代替。它设置了
activeWindow()
和focusWidget()
属性,并向所有适当的 widgets 发送适当的 WindowActivate/WindowDeactivate 和 FocusIn/FocusOut 事件。然后窗口将处于活动状态(例如,行编辑中的光标将闪烁),并将启用工具提示。- setAutoSipEnabled(enabled)#
- 参数:
enabled – bool
另请参阅
属性
autoSipEnabledᅟ
的设置器。- 静态setCursorFlashTime(arg__1)#
- 参数:
arg__1 – int
另请参阅
属性
cursorFlashTimeᅟ
的设置器。- 静态setDoubleClickInterval(arg__1)#
- 参数:
arg__1 – int
属性
doubleClickIntervalᅟ
的设置器。如果
enable
为 true,则启用 UI 效果effect
,否则将不使用效果。将默认应用程序字体更改为
font
。如果传递了className
,则更改仅适用于继承className
的类(如 QObject::inherits() 所报告的)。在应用程序启动时,默认字体取决于窗口系统。它可能因窗口系统版本和区域设置而异。此功能允许您覆盖默认字体;但是,覆盖可能不是一个好主意,因为例如,一些区域设置需要较大字体以支持它们特殊字符。
警告
不要与此功能联用Qt样式表。可以使用“字体”样式表属性自定义应用程序字体。要为所有QPushButtons设置粗体字体,请将应用程序的
styleSheet()
设置为“QPushButton
{ font: bold }”。另请参阅
font()
fontMetrics()
setFont()
- 静态 setKeyboardInputInterval(arg__1)#
- 参数:
arg__1 – int
属性
keyboardInputIntervalᅟ
的设置器。将应用程序调色板更改为
palette
。如果传入了
className
,则更改仅应用于继承className
的控件(如 QObject::inherits() 所报告)。如果className
留为0,则更改会影响所有控件,从而覆盖所有先前设置的特定于类的调色板。可以根据
polish()
中的当前GUI样式更改调色板。警告
不要与此功能联用Qt样式表。使用样式表时,可以使用“颜色”、“背景颜色”、“选择颜色”、“选择背景颜色”和“交替背景颜色”自定义控件的调色板。
注意
有些样式并不使用调色板进行所有绘制,例如,如果它们使用了原生主题引擎。这是Windows Vista和macOS样式的例子。
另请参阅
setPalette()
palette()
polish()
- static setStartDragDistance(l)#
- 参数:
l – int
另请参阅
属性
startDragDistance
的设置器。- static setStartDragTime(ms)#
- 参数:
ms – int
另请参阅
属性
startDragTime
的设置器。警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
将应用程序的GUI样式设置为
style
。样式对象的拥有权转移给QApplication
,因此当应用程序退出或设置新的样式且旧样式仍然是应用程序对象的父对象时,QApplication
将删除样式对象。示例用法
QApplication.setStyle(QStyleFactory.create("Fusion"))
在切换应用程序样式时,颜色调色板将重新设置为初始颜色或系统默认颜色。这是必要的,因为某些样式必须适应颜色调色板以完全符合样式指南。
在设置调色板之前设置样式,即,在创建
QApplication
之前,将导致应用程序使用QStyle
的标准调色板。警告
当前不支持为自定义
QStyle
子类使用Qt样式表。我们计划在未来某个版本中解决这个问题。- static setStyle(arg__1)
- 参数:
arg__1 – str
- 返回类型:
这是一个重载函数。
从
QStyle
的style
中请求QStyleFactory
对象。字符串必须是
keys()
中的之一,通常是 “windows”, “windowsvista”, “fusion” 或 “macos”。样式名称不区分大小写。如果没有提供未知
style
,则返回None
,否则返回的QStyle
对象将被设置为应用程序的 GUI 风格。警告
为了确保应用程序的样式设置正确,最好在可能的条件下在
QApplication
构造函数之前调用此函数。- setStyleSheet(sheet)
- 参数:
sheet – str
另请参阅
设置属性
styleSheetᅟ
。- static setWheelScrollLines(arg__1)
- 参数:
arg__1 – int
另请参阅
设置属性
wheelScrollLinesᅟ
。- static startDragDistance()
- 返回类型:
int
属性
startDragDistanceᅟ
的获取器。- static startDragTime()
- 返回类型:
int
另请参阅
属性
startDragTimeᅟ
的获取器。- static style()
- 返回类型:
返回应用程序的样式对象。
另请参阅
- styleSheet()
- 返回类型:
str
另请参阅
属性
styleSheetᅟ
的获取器。这是一个重载函数。
返回点(
x
,y
)处的顶级部件;如果没有这样的部件则返回0。警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
返回应用中所有顶级部件(窗口)的列表。
注意
一些顶级部件可能被隐藏,例如,如果没有显示工具提示,则可能隐藏工具提示。
示例
def showAllHiddenTopLevelWidgets(): topLevelWidgets = QApplication.topLevelWidgets() for widget in topLevelWidgets: if widget.isHidden(): widget.show()
- static wheelScrollLines()#
- 返回类型:
int
属性
wheelScrollLines
的获取器。返回全局屏幕位置
point
处的部件,如果没有在此处找到 Qt 部件则返回None
。此函数可能很慢。
- static widgetAt(x, y)
- 参数:
x – int
y – int
- 返回类型:
这是一个重载函数。
返回全局屏幕位置 (
x
,y
) 处的部件,如果没有在此处找到 Qt 部件则返回None
。