Qt执行外部程序

时间:2013-10-18 05:41:37

标签: c++ qt external

我想从我的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

但什么都没发生。有什么想法吗?

4 个答案:

答案 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的独立对象。