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