C++ 运行while循环的进程时缺少对话框内容
我有以下源代码:C++ 运行while循环的进程时缺少对话框内容,c++,qt,qprocess,qdialog,C++,Qt,Qprocess,Qdialog,我有以下源代码: void Processmethod() { QDialog *ProcessMessage = new QDialog; Ui::DialogProcessMessage Dialog; Dialog.setupUi(ProcessMessage); ProcessMessage->setModal(true); ProcessMessage->setAttri
void Processmethod()
{
QDialog *ProcessMessage = new QDialog;
Ui::DialogProcessMessage Dialog;
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
processmethodTWO();
processmethodTHREE();
}
void processmethodONE()
{
QString ProcessCommand = "w8 " + blablubli";
Prozess.setWorkingDirectory(Path); //QProcess "Prozess" is globaly defined
Prozess.setStandardOutputFile(Path); //in my class
Prozess.start(ProcessCommand);
while(!Prozess.waitForFinished(2000))
{
qApp->processEvents();
std::cerr << "Process running " << std::endl;
}
QProcess::ExitStatus Status = Prozess.exitStatus();
if (Status == 0)
{
std::cout << "File created!" << std::endl;
}
}
void Processmethod()
{
QDialog*ProcessMessage=新的QDialog;
DialogProcessMessage对话框;
setupUi(ProcessMessage);
ProcessMessage->setModal(真);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
processmethodTWO();
processmethodTHREE();
}
void processmethodONE()
{
QString ProcessCommand=“w8”+blablubli”;
setWorkingDirectory(Path);//进程“Prozess”是全局定义的
Prozess.setStandardOutputFile(Path);//在我的类中
Prozess.start(ProcessCommand);
而(!Prozess.waitForFinished(2000))
{
qApp->processEvents();
std::cerr尝试使用QDialog的exec()方法,而不是show()这将达到模式窗口的目的
这也可以解决你的问题。
QPushButtons和Qlabel(按钮和文本)缺失这可能是布局或对话框窗口大小的问题(请在将其变大后重试)
签入预览窗口(选项菜单->表单编辑器->预览)我现在使用的qApp->processEvents()
在进程while循环中。对话框内容不会立即出现,但至少在大约五到十秒钟后出现,这对我来说至少是正常的。问候您,谢谢支持。while循环冻结了UI线程-因此您无法拥有任何响应UI,无论是主对话框还是进度对话框。删除while循环并创建对话框模式,用于禁用用户输入的主UI。请参见“您好”,我编辑了我的问题。也许您可以回答新问题。我现在只想显示对话框内容,因此只有同时显示对话框内容时,一切都会正常。exec()阻止进程,直到对话框关闭,这不是我的意图。此外,QTDesigner中的预览工作正常:)。