我已经成功创建了我的第一个Qt窗口。现在我想使用Qt创建一个对话框。我刚刚完成了对话框的创建,它基本上是由QDialogButtonBox组成的,并且现在我想将其连接到窗口上。我有两个初学者的问题:
- 如何从创建新对话框的window.cpp中检索对话框关闭的方式(是否按下ok或cancel按钮)?
- 在哪里以及如何销毁对话框指针?
我已经成功创建了我的第一个Qt窗口。现在我想使用Qt创建一个对话框。我刚刚完成了对话框的创建,它基本上是由QDialogButtonBox组成的,并且现在我想将其连接到窗口上。我有两个初学者的问题:
如果您使用 dialog->show()
,那么我认为它是非模态对话框。
如果您已经创建了 QDialogButtonBox
并将其信号连接到您的对话框的 accept()
和 reject()
槽上,如文档所示,那么您的对话框将会发出 finished(int)
信号,以及 accepted()
或 rejected()
信号,通过这些信号您可以确定它是如何关闭的。
如果您需要更多自定义行为,则可以重新实现 closeEvent(QCloseEvent *event)
或创建自己的信号。
如果您需要删除您的对话框,可以使用 setAttribute(Qt::WA_DeleteOnClose, true);
,则它将在关闭时被删除实例。
您可以使用一个标志、信号和槽。当放置OK标志=1时,当放置取消时,标志=-1;然后使用信号。在window.h中编写代码,如何使用1个简单的槽处理这些标志。
为了销毁指针,您可以在对话框中使用信号和槽,并告诉用户何时按下OK、Cancel或退出(右上角(红色十字)),进入调用对话框的析构函数的槽。
并且最好将对话框的父级设置为窗口。
第一个问题:
当你想要显示对话框时,只需构造它,使用myDialog *d = new myDialog(this)
(this指针将确保你不必删除你创建的指针,因为Qt会处理这个问题,如果你指定了对话框的父对象)。并且如果需要模态对话框,请使用d->exec()
,或者使用d->show()
使其成为非模态对话框;
第二个问题:
一旦你指定了对话框的父对象,你所需要做的就是使用它,并让内存管理自己处理,Qt会为你完成这个任务。 此外,你可以使用d->setAttribute(Qt::WA_DeleteOnClose,true)
使其在关闭时自动销毁。
记得将QDialogButtonBox
链接到你的对话框操作中。