PySide6.QtWidgets.QDialog¶
- class QDialog¶
-
继承自:
QWizard
,QProgressDialog
,QMessageBox
,QInputDialog
,QFontDialog
,QErrorMessage
,QColorDialog
,QPrintPreviewDialog
,QPageSetupDialog
,QAbstractPrintDialog
,QPrintDialog
,QFileDialog
概要¶
属性¶
modalᅟ
- 是否应该以模态或无模态方式弹出对话框sizeGripEnabledᅟ
- 是否启用大小调整手柄
方法¶
def
__init__()
def
adjustPosition()
def
exec_()
def
result()
def
setModal()
def
setResult()
虚拟方法¶
信号¶
def
accepted()
def
finished()
def
rejected()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
对话框窗口是一个顶级窗口,主要用于短期任务和与用户的简短交流。QDialogs可以是模态的或无模态的。QDialogs可以提供
return value
,并且它们可以有default buttons
。QDialogs还可以在其右下角有一个QSizeGrip
,使用setSizeGripEnabled()
。请注意,
QDialog
(以及任何其他类型为Qt::Dialog
的小部件)在使用父部件时与Qt中的其他类略有不同。对话框始终是一个顶级部件,但如果它有父部件,其默认位置是在父部件的顶级部件(如果它本身不是顶级部件)的顶部居中。它还将共享父部件的任务栏条目。使用
setParent()
函数的重载来更改QDialog
小部件的所有权。此函数允许您显式设置重新父级化小部件的窗口标志;使用重载函数将清除指定小部件窗口系统属性的窗口标志(特别是它将重置Qt::Dialog标志)。注意
对话框的父级关系并不意味着对话框将始终堆叠在父窗口的顶部。为了确保对话框始终位于顶部,请将对话框设置为模态。这也适用于对话框本身的子窗口。为了确保对话框的子窗口始终位于对话框的顶部,请将子窗口也设置为模态。
模态对话框¶
一个模态对话框是一种阻止对同一应用程序中其他可见窗口输入的对话框。通常用于向用户请求文件名或设置应用程序偏好的对话框是模态的。对话框可以是应用程序模态(默认)或窗口模态。
当打开一个应用程序模态对话框时,用户必须完成与对话框的交互并关闭它,然后才能访问应用程序中的任何其他窗口。窗口模态对话框仅阻止访问与对话框关联的窗口,允许用户继续使用应用程序中的其他窗口。
显示模态对话框最常见的方式是调用其
exec()
函数。当用户关闭对话框时,exec()
将提供一个有用的return value
。要关闭对话框并返回适当的值,您必须连接一个默认按钮,例如将OK按钮连接到accept()
槽,将Cancel按钮连接到reject()
槽。或者,您可以使用Accepted
或Rejected
调用done()
槽。另一种方法是调用
setModal
(true) 或setWindowModality()
,然后调用show()
。与exec()
不同,show()
会立即将控制权返回给调用者。调用setModal
(true) 对于进度对话框特别有用,用户必须能够与对话框进行交互,例如取消长时间运行的操作。如果您使用show()
和setModal
(true) 一起执行长时间操作,您必须在处理过程中定期调用QCoreApplication::processEvents(),以使用户能够与对话框进行交互。(参见QProgressDialog
。)无模式对话框¶
一个非模态对话框是一个独立于同一应用程序中其他窗口操作的对话框。文字处理器中的查找和替换对话框通常是非模态的,以允许用户同时与应用程序的主窗口和对话框进行交互。
无模式对话框使用
show()
显示,它会立即将控制权返回给调用者。如果你在隐藏对话框后调用
show()
函数,对话框将显示在其原始位置。这是因为窗口管理器决定那些没有被程序员明确放置的窗口的位置。为了保留用户移动过的对话框的位置,在你的closeEvent()
处理程序中保存其位置,然后在再次显示之前将对话框移动到该位置。退出键¶
如果用户在对话框中按下 Esc 键,
reject()
将被调用。这将导致窗口关闭:关闭事件无法被忽略。可扩展性¶
可扩展性是指能够以两种方式显示对话框:一种是显示最常用选项的部分对话框,另一种是显示所有选项的完整对话框。通常,可扩展对话框最初会显示为部分对话框,但带有一个“更多”切换按钮。如果用户按下“更多”按钮,对话框将展开。
返回值(模态对话框)¶
模态对话框通常用于需要返回值的情况,例如指示用户是按下了“确定”还是“取消”。可以通过调用
accept()
或reject()
槽来关闭对话框,并且exec()
将返回Accepted
或Rejected
作为适当的结果。exec()
调用返回对话框的结果。如果对话框尚未被销毁,结果也可以通过result()
获得。为了修改对话框的关闭行为,你可以重新实现函数
accept()
、reject()
或done()
。只有在需要保留对话框的位置或覆盖标准的关闭或拒绝行为时,才应重新实现closeEvent()
函数。代码示例¶
一个模态对话框:
def countWords(self): dialog = WordCountDialog(self) dialog.setWordCount(document().wordCount()) dialog.exec()
一个非模态对话框:
def find(self): if not findDialog: findDialog = FindDialog(self) findDialog.findNext.connect( self.findNext) findDialog.show() findDialog.raise() findDialog.activateWindow()
带有扩展的对话框:
mainLayout.setSizeConstraint(QLayout.SetFixedSize) findButton = QPushButton(tr("Find")) moreButton = QPushButton(tr("More...")) moreButton.setCheckable(True) extension = ExtendedControls() mainLayout.addWidget(extension) extension.hide() moreButton.toggled.connect(extension.setVisible)
通过将对话框布局的
sizeConstraint
属性设置为SetFixedSize
,对话框将无法由用户调整大小,并且在扩展隐藏时会自动缩小。另请参阅
- class DialogCode¶
(继承自
enum.IntEnum
) 模态对话框返回的值。常量
描述
QDialog.Accepted
QDialog.Rejected
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property modalᅟ: bool¶
此属性决定
show()
是否应将对话框弹出为模态或无模态。默认情况下,此属性为
false
,并且show()
以非模态方式弹出对话框。将此属性设置为 true 相当于将windowModality
设置为 Qt::ApplicationModal。exec()
忽略此属性的值,并始终以模态形式弹出对话框。另请参阅
- Access functions:
- property sizeGripEnabledᅟ: bool¶
此属性表示是否启用了尺寸调整手柄。
当启用此属性时,
QSizeGrip
将放置在对话框的右下角。默认情况下,大小调整手柄是禁用的。- Access functions:
- __init__([parent=None[, f=Qt.WindowFlags()]])¶
- Parameters:
parent –
QWidget
f –
WindowType
的组合
使用父级
parent
构建一个对话框。对话框始终是一个顶级小部件,但如果它有父级,其默认位置是在父级顶部居中。它还将共享父级的任务栏条目。
小部件标志
f
被传递给QWidget
构造函数。例如,如果您不希望在对话框的标题栏中显示“这是什么”按钮,可以在f
中传递 Qt::WindowTitleHint | Qt::WindowSystemMenuHint。另请参阅
- accept()¶
隐藏模态对话框并将结果代码设置为
Accepted
。- accepted()¶
当对话框被用户接受或通过调用
accept()
或done()
并带有Accepted
参数时,会发出此信号。请注意,当使用
hide()
或setVisible
(false)隐藏对话框时,不会发出此信号。这包括在对话框可见时删除它。另请参阅
- done(r)¶
- Parameters:
r – 整数
关闭对话框并将其结果代码设置为
r
。finished()
信号将发出r
;如果r
是Accepted
或Rejected
,则accepted()
或rejected()
信号也将分别发出。如果此对话框通过
exec()
显示,done()也会导致本地事件循环结束,并且exec()
返回r
。与
close()
一样,如果设置了 Qt::WA_DeleteOnClose 标志,done() 会删除对话框。如果对话框是应用程序的主部件,应用程序将终止。如果对话框是最后一个关闭的窗口,则会发出 QGuiApplication::lastWindowClosed() 信号。- exec()¶
- Return type:
整数
将对话框显示为
模态 对话框
,直到用户关闭它为止。该函数返回一个DialogCode
结果。如果对话框是应用程序模态的,用户在关闭对话框之前无法与同一应用程序中的任何其他窗口进行交互。如果对话框是窗口模态的,只有在对话框打开时,与父窗口的交互会被阻止。默认情况下,对话框是应用程序模态的。
注意
避免使用此函数;相反,请使用
open()
。与exec()不同,open()
是异步的,并且不会旋转额外的事件循环。这可以防止一系列危险的错误发生(例如,在对话框通过exec()打开时删除对话框的父级)。使用open()
时,您可以连接到QDialog
的finished()
信号,以便在对话框关闭时收到通知。- exec_()¶
- Return type:
整数
- finished(result)¶
- Parameters:
结果 – int
当对话框的
result
代码被设置时,无论是通过用户操作还是通过调用done()
、accept()
或reject()
,都会发出此信号。请注意,当使用
hide()
或setVisible
(false)隐藏对话框时,不会发出此信号。这包括在对话框可见时删除它。另请参阅
- isSizeGripEnabled()¶
- Return type:
布尔
属性
sizeGripEnabledᅟ
的获取器。- open()¶
将对话框显示为
window modal dialog
,并立即返回。- reject()¶
隐藏模态对话框并将结果代码设置为
Rejected
。- rejected()¶
当对话框被用户拒绝或通过调用
reject()
或done()
并带有Rejected
参数时,会发出此信号。请注意,当使用
hide()
或setVisible
(false)隐藏对话框时,不会发出此信号。这包括在对话框可见时删除它。另请参阅
- result()¶
- Return type:
整数
通常返回模态对话框的结果代码,
Accepted
或Rejected
。注意
当在
QMessageBox
实例上调用时,返回值是StandardButton
枚举的一个值。如果对话框是使用Qt::WA_DeleteOnClose属性构造的,请不要调用此函数。
另请参阅
- setModal(modal)¶
- Parameters:
modal – 布尔值
属性
modalᅟ
的设置器。- setResult(r)¶
- Parameters:
r – 整数
将模态对话框的结果代码设置为
i
。- setSizeGripEnabled(arg__1)¶
- Parameters:
arg__1 – 布尔值
另请参阅
属性
sizeGripEnabledᅟ
的设置器。