首页 > 解决方案 > Qt如何在套接字等待响应时显示请等待对话框?

问题描述

我有一个发出 http 请求的函数,服务器可能需要一些时间来响应。在等待期间,我想向用户显示一个请稍候对话框。

我尝试创建请稍候对话框,然后将 http 请求发送到服务器。请稍候对话框立即返回,没有错误且不显示任何内容,然后发出 http 请求但不显示请稍​​候对话框。

如果我不执行 http 请求并允许继续执行,则会显示对话框。

我想也许解决方案是在新线程中创建请等待对话框?

我的类 clsAlert 派生自 clsDialog,在构造函数中:

    clsAlert::clsAlert(QString strText, QWidget* pParent, bool blnAutoCleanup) : QDialog(pParent), ui(new Ui::clsAlert) {
        ui->setupAlert(this);
        ui->lblText->setText(strText);
        ... set-up geometry ...
        show();
    }

使用示例:

    clsAlert* pPW = new clsAlert(clsAlert::mscszPleaseWait,mpParent);
    int intServer = intCreateSocket(szDestURL, pOutbio);
    ... a lot more source ...
    pPW->cleanup();

标签: c++qt

解决方案


最后,我通过添加一个调用来解决这个问题:

    QCoreApplication::processEvents();

在我致电后立即:

    show();

推荐阅读