我正在打开一个对话框,该对话框向用户显示一个表单:
if(dialog.exec() == QDialog::Accepted)
{
// do stuff based on returned values
if (retval == 1)
{
value1=dialog.value1();
}
if (retval == 2)
{
// do something else with values from dialog
}
}
表单的按钮提供了几个选项来操作用户输入的数据。用户可能想对表单上的数据做不止一件事。有没有办法让对话框保持打开状态,直到对话框的取消按钮发出reject()信号?
我希望对话框保持打开状态,直到通过取消按钮明确关闭为止。我希望其他按钮能像当前一样工作,将值传递回打开对话框的函数,但我希望在不关闭对话框的情况下传递这些值。
当您并不真正需要对话框时,您似乎在使用对话框。不管怎样,如果你真的需要对话框行为,你可以覆盖你的QDialog:上的一些方法
//Prevent window been closed
void MyDialog::closeEvent(QCloseEvent *event) {
event->ignore();
}
void MyDialog::accept() {
//default implementation would call: done(QDialog::Accepted)
//you can emit some signal
}
请记住,exec()在关闭对话框、按reject或调用done()之前不会返回。您可以从对话框中传递更多信息,从中发射信号。