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



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

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

最新更新