我想从我的QT-Programm中启动一个外部程序。唯一可行的解决方案是:
system("start explorer.exe");
但它只适用于Windows并且暂时启动命令行。
我接下来尝试的是:
QProcess process;
QString file = QDir::homepath + "file.exe";
process.start(file);
//process.execute(file); //i tried as well
但什么都没发生。有什么想法吗?
答案 0 :(得分:27)
如果你的process
对象是堆栈上的变量(例如在方法中),代码将无法按预期工作,因为你已经启动的进程将在{{1的析构函数中被杀死当方法完成时。
QProcess
您应该在堆上分配void MyClass::myMethod()
{
QProcess process;
QString file = QDir::homepath + "file.exe";
process.start(file);
}
对象:
QProcess
答案 1 :(得分:7)
如果您希望程序在执行过程中等待,可以使用
QProcess::execute(file);
而不是
QProcess process;
process.start(file);
答案 2 :(得分:5)
QDir :: homePath不以分隔符结尾。 exe的有效路径
QString file = QDir::homePath + QDir::separator + "file.exe";
答案 3 :(得分:0)
只需使用QProcess::startDetached
;它是静态的,您无需担心等待它完成或在堆上分配诸如此类的东西:
QProcess::startDetached(QDir::homepath + "/file.exe");
它是QProcess::execute
的独立对象。