我正在打开一个对话框,向用户显示一个表单:
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()信号?
我希望对话框保持打开状态,直到通过取消按钮显式关闭它。我希望其他按钮按照当前的功能运行,将值传递回打开对话框的函数,但我希望在不关闭对话框的情况下传递这些值。
答案 0 :(得分:0)
当你真的不需要时,看起来你正在使用Dialog。无论如何,如果你真的需要对话行为,你可以覆盖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
}
请记住,在关闭对话框,按拒绝或调用done()之前,exec()不会返回。您可以从对话框中传递更多信息,从中发出信号。