You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用QProcess调用Windows start启动Notepad++失败问题咨询

QProcess调用start notepad++ file.txt报错FailedToStart的解决办法

我来帮你排查这个问题~你在终端里执行start notepad++ file.txt正常,但用QProcess就报错,核心原因是:start是Windows CMD的内置命令,不是一个独立的可执行程序,QProcess的start()方法默认会去寻找一个可执行文件来启动,它找不到start.exe,所以就触发了FailedToStart错误。

给你两种可行的解决方法:

方法一:通过CMD执行start命令

既然start是CMD的内置命令,那我们可以直接调用cmd.exe,把start相关的命令作为参数传递进去:

修改你代码里的启动部分:

// 替换原来的process->start("start", { "notepad++", "file.txt" });
process->start("cmd.exe", {"/c", "start notepad++ file.txt"});

这里的/c参数是告诉CMD:执行完后面的命令后就退出,这样QProcess能正确处理后续的finished信号。

方法二:直接启动Notepad++(更推荐)

如果Notepad已经添加到系统环境变量PATH中,或者你知道它的完整安装路径,直接启动Notepad的可执行文件会更直接,不需要经过CMD中转:

// 如果Notepad++在PATH里,直接这样写
process->start("notepad++", {"file.txt"});

// 如果你知道完整路径,比如:
// process->start("C:/Program Files/Notepad++/notepad++.exe", {"file.txt"});

这种方式更高效,也避免了和CMD相关的参数问题。

你的原代码参考

QProcess* process = new QProcess;
QObject::connect(process, &QProcess::errorOccurred, this, [process](QProcess::ProcessError e)
{
  qDebug() << process->errorString();
  qDebug() << e;
});
QObject::connect(process, qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this, [process](int exitcode, QProcess::ExitStatus)
{
  if(exitcode != 0)
    qDebug() << process->readAllStandardError();

  process->deleteLater();
});

// 原来的错误调用
// process->start("start", { "notepad++", "file.txt" });

内容的提问来源于stack exchange,提问作者Fausto01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:30:58