我有一些奇怪的东西,我有一个像这样从 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/