我已经制作了第一个qt窗口。现在我想用qt制作我的第一个对话框。我刚刚完成了对话框的创建,该对话框基本上由QDialogButtonBox组成,现在我想将它连接到窗口。我有两个初学者的问题:
答案 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
与您对话框的操作相关联。