3

我已经制作了我的第一个 qt 窗口。现在我想使用 qt 创建我的第一个对话框。我刚刚完成了对话框的创建,它基本上是由一个 QDialogBu​​ttonBox 组成的,现在我想将它连接到窗口。我有两个初学者的问题:

  • 如何从 window.cpp 检索对话框是如何关闭(确定按下或取消按下)的,它创建一个新对话框,然后调用 dialog->show() ?
  • 在哪里以及如何销毁对话框指针?
4

3 回答 3

2

如果您使用dialog->show(),那么我认为它是非模态对话框。

如果您已按照文档所示QDialogButtonBox创建并将其信号与对话框的插槽连接accept()reject()那么您的对话框将发出另外的或信号,您可以通过这些信号确定它是如何关闭的。finished(int)accepted()rejected()

如果您需要更多自定义行为,则可以重新实现closeEvent(QCloseEvent *event)或创建自己的信号。

如果您需要删除您可以使用的对话框setAttribute(Qt::WA_DeleteOnClose, true);,它将在关闭时删除实例。

于 2013-01-04T06:38:42.117 回答
1

您可以使用一个标志,以及信号和插槽。当放置 OK flag=1 时,当放置取消时 flag=-1; 然后使用信号。在 window.h 中编写代码如何使用 1 个简单插槽处理该标志。

要销毁指针,您可以在对话框中使用信号和插槽,并告诉用户何时按下 Ok、或 Cancel 或退出(向上(红色叉号))转到调用对话框的 Destructer 的插槽

还有你最好将对话框的父级设置为窗口。

于 2013-01-04T06:38:47.600 回答
1
  • 第一个问题:

    当您想显示对话框时,只需构造它,使用myDialog *d = new myDialog(this)this指针将确保您没有删除您创建的指针,因为如果您指定了对话框的父级,Qt 将处理此问题)。如果d->exec()您需要模态对话框,则使用d- >show() 使其成为非模态;

  • 第二个问题:

    一旦你指定了对话框的父对象,你所需要的只是使用它而不管内存管理器,Qt 会为你做这件事。您也可以使用d->setAttribute(Qt::WA_DeleteOnClose,true)它使其在关闭时自行销毁。

请记住将 链接QDialogButtonBox到对话框的操作。

于 2013-01-04T10:25:48.643 回答