Qt 执行外部程序

新手上路,请多包涵

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

但是什么也没发生。有任何想法吗?

原文由 btzs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 792
2 个回答

如果您的 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);

原文由 tomvodi 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

QString file = QDir::homePath + QDir::separator + "file.exe";

原文由 nnesterov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题