保持对话框打开直到拒绝信号

时间:2015-02-10 21:59:09

标签: c++ qt qdialog

我正在打开一个对话框,向用户显示一个表单:

 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()信号?

我希望对话框保持打开状态,直到通过取消按钮显式关闭它。我希望其他按钮按照当前的功能运行,将值传递回打开对话框的函数,但我希望在不关闭对话框的情况下传递这些值。

1 个答案:

答案 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()不会返回。您可以从对话框中传递更多信息,从中发出信号。