m0_61770108 2025-03-12 18:32 采纳率: 12.3%
浏览 11

Qprocess没有接收到cmd的数据

在Windows的cmd窗口中C:\Users\14605>D:\TestQt\CMD\TestCMD4\TestCMD4\build\Desktop_Qt_6_4_1_MSVC2019_64bit-Debug\TestCMD4.exe
可以正常输出,然后程序一直执行,需要等Ctrl+C才结束

img

测试1:在Qt使用Qprocess执行文件时,进程一直卡着,不返回数据
代码为:

process->start("cmd", QStringList() << "/C" << "D:\\TestQt\\CMD\\TestCMD4\\TestCMD4\\build\\Desktop_Qt_6_4_1_MSVC2019_64bit-Debug\\TestCMD4.exe"); 
 connect(process, &QProcess::readyReadStandardOutput, this, &WidgetClass::ReadProcessOutput);
 connect(process, &QProcess::readyReadStandardError, this, &WidgetClass::ReadProcessErrors);

img


错误:没有接收到任何数据,ReadProcessOutput和ReadProcessErrors没有被触发

测试2:代码:

QProcess process;
    process.start("D:/TestQt/CMD/TestCMD4/TestCMD4/build/Desktop_Qt_6_4_1_MSVC2019_64b/TestCMD4.exe");//假设路径下的文件名为TestCMD4.exe

    if (process.waitForStarted()) {
        qDebug() << "Process started";
        if (process.waitForFinished()) {
            QByteArray output = process.readAllStandardOutput();
            qDebug() << "Output:" << output;
        } else {
            qDebug() << "Process did not finish correctly";
        }
    } else {
        qDebug() << "Process could not be started";
    }

输出为:Process could not be started

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-12 18:34
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    这可能是由于Qt中QProcess执行文件时未设置正确的工作目录导致的。可以尝试在使用QProcess执行程序之前设置其工作目录,例如:
    QProcess process;
    QString program = "D:/TestQt/CMD/TestCMD4/TestCMD4/build/Desktop_Qt_6_4_1_MSVC2019_64bit-Debug/TestCMD4.exe";
    QStringList arguments; // 如果有需要,可以添加程序参数
    process.setWorkingDirectory("C:/Users/14605"); // 设置工作目录为C:\Users\14605
    process.start(program, arguments);
    process.waitForFinished(); // 等待进程执行完成
    QString result = process.readAllStandardOutput(); // 获取输出
    

    在这段代码中,我们使用setWorkingDirectory()方法设置了QProcess的工作目录为C:\Users\14605,然后再启动程序。这样通常可以解决程序卡住的问题。 如果仍然无法解决问题,可能是程序本身的问题,可以尝试在cmd中手动执行程序,看看是否有任何报错信息。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月12日
  • 创建了问题 3月12日