startDetached()
是一个静态方法并且不运行importModule
根本不。
它启动一个进程,然后停止关心。因此 error()/errorState() 中importModule
与以下内容无关startDetached()
称呼。你想要的是start()
。
然而,由于 QProcess 是异步的,所以在 start() 返回后不会立即发生任何事情。您必须连接到started()
, error()
and 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。