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小工具误用到一个它们不是为之设计的目的要好。用户希望单击“确定”时对话框消失。再次编辑以反映该对话框是一个窗体,而不是“确定/取消”对话框。因此,如果我正确理解,我真正需要做的是用我的窗体打开一个新窗口,并在完成后将其关闭?不使用对话框?正确。如果您希望您的窗口是模态的,您可以使用。