QDialog类是对话框窗口的基类。
Header: | #include |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Inherits: | <<< QWidget |
Inherited By: |
详细描述>>>
【公共类型】
enum | DialogCode { Accepted, Rejected } | 模式对话框返回值。 常量:QDialog::Accepted 值:1 常量:QDialog::Rejected 值:0 |
【属性】
- modal : bool
此属性适用于show(),控制对话框是以模态还是非模态方式弹出。
默认此属性为
false,
以无模式方式弹出对话框。将此属性设置为true等效于设置QWidget::windowModality为Qt::ApplicationModal。
注意:exec()函数忽略该属性的值,并始终以模式方式弹出对话框。
- sizeGripEnabled : bool
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() | / |
bool | isSizeGripEnabled() const | 返回右下角是否显示“抓痕”。默认是禁用的。 |
int | result() const | 通常返回模式对话框的结果代码,Accepted 或者Rejected . |
void | setModal(bool modal) | 设置模态状态。 |
void | setResult(int i) | 将模式对话框的结果代码设置为 i 。 建议使用已定义的枚举 QDialog::DialogCode 。 |
void | setSizeGripEnabled(bool) | 返回右下角是否显示“抓痕”。默认是禁用的。 |
【重新实现的函数】
virtual QSize | minimumSizeHint() const override | 重新实现属性的访问函数:QWidget::minimumSizeHint. |
virtual void | setVisible(bool visible) override | 重新实现属性的访问函数: QWidget::visible。 |
virtual QSize | sizeHint() const override | 重新实现属性的访问函数: QWidget::sizeHint。 |
【公共槽函数】
virtual void | accept() | 隐藏模式对话框并将结果代码设置为 |
virtual void | done(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 int | exec() | 将对话框显示为模态对话框 modal dialog,一直阻塞到用户关闭它。该函数返回一个对话代码DialogCode。 如果该对话框应用模型 application modal在关闭对话框之前,用户无法与同一应用程序中的任何其他窗口进行交互。如果该对话框窗口模式window modal对话框打开时,仅阻止与父窗口的交互。默认情况下,该对话框是应用程序模式的。 注意:避免使用此功能;相反,使用 |
virtual void | open() | 将对话框立即显示为窗口模式对话框 window modal dialog。 |
virtual void | reject() | 隐藏模式对话框并将结果代码设置为Rejected . |
【信号】
void | accepted() | |
void | finished(int result) | |
void | rejected() | 当对话框被用户拒绝或通过调用带有参数的 reject() 或done() 时,将发出此信号。 |
注意,当使用 hide() 或 setVisible(false)隐藏对话框时,不会发出上方三个信号。这包括在对话框可见时将其删除。
【重新实现的保护函数】
virtual void | closeEvent(QCloseEvent *e) override | 重实现父类QWigget中的虚函数。 |
virtual void | contextMenuEvent(QContextMenuEvent *e) override | |
virtual bool | eventFilter(QObject *o, QEvent *e) override | |
virtual void | keyPressEvent(QKeyEvent *e) override | |
virtual void | resizeEvent(QResizeEvent *) override | |
virtual void | showEvent(QShowEvent *event) override |