qt创建对话框

时间:2013-01-04 04:14:43

标签: qt

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

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

3 个答案:

答案 0 :(得分:2)

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

如果您已创建QDialogButtonBox并将其信号与对话框的accept()reject()个插槽连接为documentation shows,那么您的对话框将会发出finished(int)和另外accepted()rejected()信号,您可以通过这些信号确定它是如何关闭的。

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

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

答案 1 :(得分:1)

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

用于销毁指针,您可以使用Dialog中的信号和插槽,并告诉用户何时按下 好的,或者取消,或者退出(右上角(红十字))进入调用Destructer of dialog的插槽

并且您最好将对话框的父级设置为窗口。

答案 2 :(得分:1)

  • 第一个问题:

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

  • 第二个问题:

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

请记住QDialogButtonBox与您对话框的操作相关联。