c++ - 为什么不弹出窗口?

标签 c++ qt popup qprocess

我有以下源代码:

    Processmethod()
{

    QDialog *ProcessMessage = new QDialog;      
    Ui::DialogProcessMessage Dialog;            
    Dialog.setupUi(ProcessMessage);             
    ProcessMessage->setModal(true);
    ProcessMessage->setAttribute(Qt::WA_DeleteOnClose); 
    ProcessMessage->show();



    PROCESSES START                     
}

在我想显示 QDialog“ProcessMessage”之后,有三个 QProcess 进程包含在以下三种不同的方法中。如果我使用 // 禁用这些方法,弹出窗口显示得很好,但如果我启用这些方法,进程运行正常,但弹出窗口不会出现。任何想法/解决方案?问候

最佳答案

在 Process 方法未返回之前,您的窗口不会显示,因为在主函数中实现了主应用程序循环

int main(int argc, char *argv[])
{
        QApplication a(argc, argv);
        QDialog w; // or other window
        w.show();
        return a.exec(); // main app loop (all drawing procedures called from here
}

因此,如果您调用 PROCESSES START,则在 QApplication::exec() 中返回 Process 方法之前什么都没有发生

你可以在单独的线程中启动你的进程,并通过在队列模式下实现信号槽向你的对话框发送进度通知

关于c++ - 为什么不弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807610/

相关文章:

c++ - 核心音频指定要解码的音轨

c++ - 在使用 PIN 的模拟器上对 Pthread 进行安全编程

c++ - QWidget 如何获得 "entire"父对象?

c++ - 在 C++ 和 QML 之间切换 View 时的奇怪行为

c++ - 输出二维 vector 的语法

c++ - QLabel 在 Qt 中获取 QImage 时如何设置 QSpinBox?

c++ - 通过样式表在 QMenu 中选择禁用的操作

html - 为什么打开 CSS 弹出窗口时页面会滚动到顶部?

popup - 拖动标记时会触发传单 popupclose 事件

javascript - leaflet:使用 popup.setContent() 更改弹出图像