class QDialog#

《QDialog》类是对话框窗口的基类。 更多

Inheritance diagram of PySide6.QtWidgets.QDialog

继承自: 《QWizard》类, 《QProgressDialog》类, 《QMessageBox》类, 《QInputDialog》类, 《QFontDialog》类, 《QErrorMessage》类, 《QColorDialog》类, 《QPrintPreviewDialog》类, 《QPageSetupDialog》类, 《QAbstractPrintDialog》类, 《QPrintDialog》类, 《QFileDialog》类。

简介#

属性#

  • modalᅟ - 是否在调用show()方法时以模态的形式弹出对话框

  • sizeGripEnabledᅟ - 是否启用了尺寸调整把手

方法#

虚方法#

信号#

注意

此文档可能包含从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 标志)。

注意

对话框的父关系 表示对话框将始终堆叠在父窗口之上。要确保对话框始终在顶部,请将其设置为模态。这同样适用于对话框本身的子窗口。为确保对话框的子窗口始终在对话框上方,请也将子窗口设置为模态。

无模态对话框#

一个 非模态 对话框是独立于同一应用程序中其他窗口运行的对话框。在文字处理程序中查找和替换对话框通常是无需模态的,以便用户可以与应用程序的主窗口和对话框进行交互。

使用 show() 显示无模态对话框,该函数立即将控制权返回给调用者。

在与对话框隐藏之后调用show() 函数,对话框将显示在原始位置。这是因为窗口管理器决定未由程序员明确放置的窗口的位置。为了保留已被用户移动的对话框的位置,请在您的 closeEvent() 处理程序中保存其位置,然后在显示它之前将其移动到该位置。

默认按钮

对话框的 默认 按钮是在用户按下 Enter(Return)键时按下的按钮。此按钮用于指明用户接受对话框的设置并希望关闭对话框。使用 setDefault()isDefault()autoDefault() 来设置和控制对话框的默认按钮。

Esc 键

如果用户在对话框中按下 Esc 键,将调用 reject() 方法。这将导致窗口关闭:关闭事件不能被忽略。

扩展性

扩展性是指以两种方式显示对话框:一种是部分对话框,显示最常用的选项;另一种是完整对话框,显示所有选项。通常,可扩展的对话框最初会以部分对话框的形式显示,但带有更多切换按钮。如果用户按下更多按钮,对话框将被展开。

返回值(模态对话框)

模态对话框通常用于需要返回值的情况,例如指示用户是否按下了 OK 或 Cancel。可以通过调用 accept()reject() 插槽来关闭对话框,并且 exec() 将根据情况返回 AcceptedRejectedexec() 调用返回对话框的结果。如果对话框尚未销毁,也可以从 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,对话框将无法被用户调整大小,当扩展被隐藏时,对话框将自动缩小。

另请参阅

QDialogButtonBox QTabWidget QWidget QProgressDialog 标准对话框示例

class DialogCode#

(继承自 enum.IntEnum)模式对话框返回的值。

常量

描述

QDialog.Accepted

QDialog.Rejected

注意

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

property modalᅟ: bool#

此属性保留show()应将对话框弹出为模式还是非模式。

默认情况下,此属性为false,且show()将对话框弹出为非模式。将此属性设置为true等价于将windowModality设置为Qt::ApplicationModal。

exec() 属性的值被忽略,并且总是以模态对话框的形式弹出。

访问函数
属性sizeGripEnabledᅟ: bool#

此属性用于设置是否启用尺寸调整。

当此属性启用时,QSizeGrip 将放置在对话框的右下角。默认情况下,尺寸调整被禁用。

访问函数
__init__([parent=None[, f=Qt.WindowFlags()]])#
参数:

构建一个带有父对象 parent 的对话框。

对话框始终是一个顶级小部件,但是如果有父对象,其默认位置是位于父对象顶部中央。它也将共享父对象的任务栏条目。

将小部件标志 f 传递给 QWidget 构造函数。例如,如果您不希望在对话框标题栏中显示“这是什么”按钮,请将 Qt::WindowTitleHint | Qt::WindowSystemMenuHint 传递给 f

另请参阅

setWindowFlags()

accept()#

隐藏模态对话框,并将结果代码设置为 Accepted

另请参阅

reject() done()

accepted()#

当对话框被用户接受或通过调用accept() 或者 done() 并以 Accepted 参数进行时,会发射此信号。

请注意,此信号在隐藏对话框使用 hide()setVisible (false) 时不会发射。这包括在对话框可见时删除对话框。

另请参阅

finished() rejected()

adjustPosition(arg__1)#
参数:

arg__1QWidget

done(arg__1)#
参数:

arg__1 – int

关闭对话框并将其结果代码设置为 r。当 finished() 信号发射时,将发射 r;如果 rAcceptedRejected,则分别发射 accepted()rejected() 信号。

如果使用 exec() 显示此对话框,done() 也会导致本地事件循环结束,并且 exec() 返回 r

close() 一样,如果设置了 Qt::WA_DeleteOnClose 标志,done() 会删除对话框。如果对话框是应用程序的主小部件,应用程序将终止。如果对话框是最后关闭的窗口,则发射 QGuiApplication::lastWindowClosed() 信号。

exec()#
返回类型:

int

以模态对话框的形式显示对话框,阻塞用户关闭它之前。函数返回DialogCode结果。

如果对话框是应用程序模态对话框,在关闭对话框之前,用户无法与应用程序中的任何其他窗口进行交互。如果对话框是窗口模态对话框,在对话框打开期间,只有与父窗口的交互被阻塞。默认情况下,对话框是应用程序模态。

注意

避免使用此函数;相反,使用open()。与exec()不同,open()是异步的,不启动另一个事件循环。这可以防止一系列危险错误的产生(例如,在通过exec()打开对话框时删除对话框的父级)。当使用open()时,您可以通过连接到QDialogfinished()信号来接收对话框关闭的通知。

exec_()#
返回类型:

int

finished(result)#
参数:

结果 - int

当对话框的 result 代码被设置时,无论是用户设置还是通过调用 done()accept() ,或 reject() 时,会发出此信号。

请注意,此信号在隐藏对话框使用 hide()setVisible (false) 时不会发射。这包括在对话框可见时删除对话框。

另请参阅

accepted() rejected()

isSizeGripEnabled()#
返回类型:

bool

属性 sizeGripEnabledᅟ 的获取器。

open()#

window modal dialog 的形式显示对话框,并立即返回。

reject()#

隐藏模态对话框并将结果代码设置为 Rejected

另请参阅

accept() done()

rejected()#

当对话框因用户或调用 reject() 或以 done() 方式,并携带 Rejected 参数被拒绝时,会发出此信号。

请注意,此信号在隐藏对话框使用 hide()setVisible (false) 时不会发射。这包括在对话框可见时删除对话框。

另请参阅

finished() accepted()

result()#
返回类型:

int

通常返回模态对话框的结果代码,AcceptedRejected

注意

当在 QMessageBox 实例上调用时,返回值是 StandardButton 枚举的值。

如果对话框是通过 Qt::WA_DeleteOnClose 属性构造的,不要调用此函数。

另请参阅

setResult()

setModal(modal)#
参数:

modal - bool

属性 modalᅟ 的设置器。

setResult(r)#
参数:

r - int

将模态对话框的结果代码设置为 i

注意

我们建议您使用 DialogCode 定义的值之一。

另请参阅

result()

setSizeGripEnabled(arg__1)#
参数:

arg__1 - bool

另请参阅

isSizeGripEnabled()

属性 sizeGripEnabledᅟ 的设置器。