Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 保持对话框打开,直到拒绝信号_C++_Qt_Qdialog - Fatal编程技术网

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

C++ 保持对话框打开,直到拒绝信号,c++,qt,qdialog,C++,Qt,Qdialog,我正在打开一个对话框,向用户显示一个表单,其中包含: if(dialog.exec() == QDialog::Accepted) { // do stuff based on returned values if (retval == 1) { value1=dialog.value1(); } if (retval == 2) { // do somet

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

 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
         }
     }
表单的按钮为用户输入的数据操作提供了多种选择。用户很可能希望对表单上的数据做不止一件事。是否有办法保持对话框打开,直到对话框的“取消”按钮传递拒绝信号


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

看起来您正在使用一个对话框,而实际上并不需要它。无论如何,如果您确实需要对话框行为,您可以覆盖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
}

请记住,除非您关闭对话框,按reject或调用done,否则exec不会返回。您可以从发出信号的对话框中传递更多信息。

您的问题不太清楚,您的意思是当您不想退出时than exec正在退出,例如,当您按下“确定”按钮时,您希望它保持打开状态,并仅在“取消单击”编辑时关闭,希望更清晰。阅读此问题时,我的第一反应是,这听起来是个坏主意。当然,我不知道你在做什么,但我想可能有一个更好的解决方案,比把UI小工具误用到一个它们不是为之设计的目的要好。用户希望单击“确定”时对话框消失。再次编辑以反映该对话框是一个窗体,而不是“确定/取消”对话框。因此,如果我正确理解,我真正需要做的是用我的窗体打开一个新窗口,并在完成后将其关闭?不使用对话框?正确。如果您希望您的窗口是模态的,您可以使用。