QDialog类

QDialog类是对话框窗口的基类。

Header:#include
CMake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets
Inherits:<<< QWidget
Inherited By:

QColorDialog >>>

QErrorMessage

QFileDialog

QFontDialog

QInputDialog

QMessageBox

QProgressDialog

QWizard


详细描述>>>


【公共类型】

enumDialogCode { Accepted, Rejected }

模式对话框返回值。

常量:QDialog::Accepted  值:1

常量:QDialog::Rejected   值:0


【属性】

此属性适用于show(),控制对话框是以模态还是非模态方式弹出。

默认此属性为false,以无模式方式弹出对话框。

将此属性设置为true等效于设置QWidget::windowModalityQt::ApplicationModal

注意:exec()函数忽略该属性的值,并始终以模式方式弹出对话框。

sizeGripEnabled属性表示是否在对话窗右下角显示抓痕(英文grip),该抓痕表示可以通过点击拖拽对窗口进行大小调整。默认“抓痕”处于禁用状态。


【公有函数】

构造:QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

QWidget *parent = nullptr

指定父对象。(对话框始终是顶级部件,但如果它有父级,默认位置处于父级顶部居中)


 

Qt::WindowFlags f = Qt::WindowFlags() 

指定控件的窗口标识。

窗口标识由窗口类型和窗口提示两部分组成,一个窗口只有一个窗口类型,它定义了窗口的外观,但可以有多个提示,窗口提示进行按位取或即可。


了解Qt::WindowFlags枚举类型必须清楚两个概念:窗口和部件

  • 窗口:相对独立,有子窗口和父窗口之分,特点是有完整的边框。
  • 部件:依赖父窗口而存在,出现在父窗体的界面内部。


有了上述的概念再看Qt::WindowFlags枚举类型的用法。首先根据参数parent的指定判断一个控件是不是窗体,要是值为0(值为0即Qt::Widget)即可判断其是一个窗口。否则需要根据Qt::WindowFlags枚举类型的值才可以判断其是窗口还是部件。

更多>>>

virtual~QDialog()/
boolisSizeGripEnabled() const返回右下角是否显示“抓痕”。默认是禁用的。
intresult() const通常返回模式对话框的结果代码,Accepted或者Rejected.
voidsetModal(bool modal)设置模态状态。
voidsetResult(int i)

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

建议使用已定义的枚举 QDialog::DialogCode 。

voidsetSizeGripEnabled(bool)返回右下角是否显示“抓痕”。默认是禁用的。

【重新实现的函数】

virtual QSizeminimumSizeHint() const override重新实现属性的访问函数:QWidget::minimumSizeHint.
virtual voidsetVisible(bool visible) override重新实现属性的访问函数: QWidget::visible
virtual QSizesizeHint() const override重新实现属性的访问函数: QWidget::sizeHint

【公共槽函数】

virtual voidaccept()

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

virtual voiddone(int r)

关闭对话框并将其结果代码设置为r。这时完成finished() 信号将发出r;如果r是接受 QDialog::Accepted或者拒绝 QDialog::Rejected,这个 accepted()或rejected() 信号也将分别发出。

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

正如​​​​​​​QWidget::close(),done() 如果Qt::WA_DeleteOnClose标志已设置。如果对话框是应用程序的主要窗口部件,应用程序将终止。如果该对话框是最后一个关闭的窗口,则发出QGuiApplication::lastWindowClosed() 信号。

virtual intexec()

将对话框显示为模态对话框 modal dialog,一直阻塞到用户关闭它。该函数返回一个对话代码DialogCode

如果该对话框应用模型 application modal在关闭对话框之前,用户无法与同一应用程序中的任何其他窗口进行交互。如果该对话框窗口模式window modal对话框打开时,仅阻止与父窗口的交互。默认情况下,该对话框是应用程序模式的。

注意:避免使用此功能;相反,使用open()。与exec()不同,​​​​​​​open()是异步的,不会产生额外的事件循环。这可以防止一系列危险错误的发生(例如,在通过exec() 打开对话框时删除对话框的父级)。使用时​​​​​​​open() 您可以连接到完成finished() 的信号,并在QDialog对话框关闭时得到通知。

virtual voidopen()将对话框立即显示为窗口模式对话框 window modal dialog
virtual voidreject()隐藏模式对话框并将结果代码设置为Rejected.

【信号】

voidaccepted()

当对话框被用户接受或通过调用带有参数的  accept() 或done()时,将发出此信号。

voidfinished(int result)

当用户或通过调用  done(), accept()或reject() 设置对话框代码时,将发出此信号。

voidrejected()当对话框被用户拒绝或通过调用带有参数的  reject() 或done() 时,将发出此信号。

注意,当使用 hide() 或 setVisible(false)隐藏对话框时,不会发出上方三个信号。这包括在对话框可见时将其删除。


【重新实现的保护函数】

virtual voidcloseEvent(QCloseEvent *e) override重实现父类QWigget中的虚函数。
virtual voidcontextMenuEvent(QContextMenuEvent *e) override
virtual booleventFilter(QObject *o, QEvent *e) override
virtual voidkeyPressEvent(QKeyEvent *e) override
virtual voidresizeEvent(QResizeEvent *) override
virtual voidshowEvent(QShowEvent *event) override

<<<返回上一级【QWidget】

<<<返回根页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值