首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Qt执行外部程序

Qt执行外部程序
EN

Stack Overflow用户
提问于 2013-10-18 13:41:37
回答 4查看 56.5K关注 0票数 27

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-18 14:20:11

如果您的process对象是堆栈上的一个变量(例如,在一个方法中),代码将不会按预期工作,因为当方法结束时,您已经启动的进程将在QProcess的析构函数中终止。

void MyClass::myMethod()
{
    QProcess process;
    QString file = QDir::homepath + "file.exe";
    process.start(file);
}

相反,您应该像这样在堆上分配QProcess对象:

QProcess *process = new QProcess(this);
QString file = QDir::homepath + "/file.exe";
process->start(file);
票数 31
EN

Stack Overflow用户

发布于 2015-11-17 23:45:43

如果您希望程序在进程执行期间等待,并且只需要获取其退出代码,则可以使用

QProcess::execute(file);
QProcess::exitCode(); // returns the exit code

而不是像这样异步使用进程。

QProcess process;
process.start(file);

请注意,您还可以阻止执行,直到进程结束。为了做到这一点

process.waitForFinished();

在该过程开始之后。

票数 8
EN

Stack Overflow用户

发布于 2013-10-18 14:00:14

QDir::homePath不以分隔符结尾。到您的exe的有效路径

QString file = QDir::homePath + QDir::separator + "file.exe";
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19442400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档