gpt4 book ai didi

c++ - QProcess未知错误

转载 作者:行者123 更新时间:2023-11-30 02:51:14 25 4
gpt4 key购买 nike

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

错误未知。

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

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。它也不会启动其他 exes,例如

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

我做错了什么?还有其他方法可以从我的程序中运行一些 .exe 吗?或者可能是 .bat 文件(运行 exe)? (也尝试使用 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。

关于c++ - QProcess未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com