Q未知错误

QProcess unknown error

本文关键字:错误 未知      更新时间:2023-10-16

我遇到了奇怪的问题。Q只是不工作!

错误是未知的。

我在标题中得到了全局变量

QProcess *importModule;

我得到了这个功能(顺便说一句,我尝试了startstartDetached方法)

    void App::openImport(){
      importModule = new QProcess();
      importModule->setWorkingDirectory(":\Resources");
      importModule->startDetached("importdb_module.exe");
      QMessageBox::information(0,"",importModule->errorString());
}

它只是输出该error is unknown.它也不会启动其他前任,例如

    void App::openImport(){
      importModule = new QProcess();
      importModule->setWorkingDirectory("C:\Program Files\TortoiseHg");
      importModule->startDetached("hg.exe");
      QMessageBox::information(0,"",importModule->errorString());
}

我做错了什么?还有其他方法可以从我的程序中运行一些.exe吗?或者也许.bat文件(运行 exes)?(也尝试过QProcess,不起作用)

startDetached()是一个

静态方法,根本不对importModule进行操作。它开始一个过程,然后停止关心。因此,importModule 中的 error()/errorState() 与startDetached()调用无关。你想要的是start().但是,由于 QProcess 是异步的,因此在 start() 返回后不会立即发生任何事情。您必须连接到started()error()finished()信号才能了解结果。

connect(importModule, SIGNAL(started()), this, SLOT(importModuleStarted()));
connect(importModule, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(importModuleFinished(int, QProcess::ExitStatus)));
CONNECT(importModule, SIGNAL(error(QProcess::ProcessError)), this, SLOT(importModuleError(QProcess::ProcessError)));
importModule->start(QStringLiteral("importdb_module"), QStringList());

或者,您可以使用阻塞等待功能:

importModule->start(QStringLiteral("importdb_module"), QStringList());
importModule->waitForStarted(); // waits until starting is completed
importModule->waitForFinished(); // waits until the process is finished

但是,我强烈建议不要在主线程中使用它们,因为它们会阻止 UI。