c++ - 对话窗口在完成之前关闭(已接受);

标签 c++ qt

我有一些奇怪的东西,我有一个像这样从 MainWIndow 触发的对话框窗口:

//this is from main window 
DialogUpdateContainer dialogUpdateContainer(this);
  dialogUpdateContainer.getFileName(m_new_version_name);
  if(dialogUpdateContainer.exec() == QDialog::Accepted ) 
  {
      return true;
  }

并且在DialogUpdateContainer 我有这个简单的代码:

DialogUpdateContainer::DialogUpdateContainer( QWidget *parent) : QDialog(parent),   
                                                                 ui(new Ui::DialogUpdate)
{
    ui->setupUi( this );
    pHttpDownloadManager = new HttpDownloadManager();

    connect(ui->buttonBox,
    SIGNAL(accepted()),
    this, 
    SLOT(OkSettingsHandler())); 

   connect(ui->buttonBox,
           SIGNAL(rejected()),
           this,
         SLOT(CancelSettingsHandler()));
}

void DialogUpdateContainer::getFileName(QString& fileNameToDownload)
{
    fileToDownload = fileNameToDownload;
}

void DialogUpdateContainer::OkSettingsHandler()
{
    if(pHttpDownloadManager->downloadFile(fileToDownload))
{
    done(Accepted);
}

}
void DialogUpdateContainer::CancelSettingsHandler()
{
    done(Rejected);
}

现在的问题是,当我在对话框窗口中单击“确定”时,它会立即关闭,而无需等待 pHttpDownloadManager->downloadFile(fileToDownload&); 完成 它甚至永远不会完成(已接受);
为什么?
我希望它等到它完成功能然后才关闭。

最佳答案

很奇怪:

 if(dialogUpdateContainer.exec() == QDialog::Accepted ) {

     return true;
  }

正常:

 if(dialogUpdateContainer.exec()==QDialog::Accepted ) {

     return true;
  }

关于c++ - 对话窗口在完成之前关闭(已接受);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18174814/

相关文章:

c++ - 是否允许 std::string 的 end+1 迭代器?

linux - 使用 -rpath 加载 QLibrary

c++ - 如何在 CPU 负载为 100% 时保持 UI 响应(主要使用 C++ 和 Qt)?

c++ - 未定义对 Qt 中静态声明变量的引用?

c++ - 在 Mac Os X 上使用 CGEvent 和 Qt

c++ - VS2010 改变路径宏

c++ - 如何在 C++-CLI 中使用 ConditionalAttribute?

c++ - 获取字符串库中抛出的异常

c++ - 我可以为 2 个或更多应用程序进行 QSettings 设置吗?

c++ - 为什么捕获 std::bad_cast 在 FreeBSD 9 上不起作用?