QT关于通过Qprocess执行指令,然后将输出结果显示到程序的对应界面中

具体问题是:我用QProcess执行tail -f 指令,文件是一个日志文件,现在做了一个QT界面,我需要做的是将读取的日志显示到QStandardItem中,我大概做法是setstandardout,然后然后QString msg =前面的这个输出,最后是QStandardItem->append(msg) ,不知道为啥显示不出内容,用qdebug()显示出的结果也都是“ ”,就是没有内容,请教各位,谢谢

直接在命令行里运行你的命令,看看是否能执行,是否报错呢

1100

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Qt中利用QProcess调用外部cmd.exe执行程序
  • 除此之外, 这篇博客: 【Qt】QProcess的使用总结中的 读取输出/到文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    // 从标准输出通道中读取数据
    readAllStandardOutput()
    // 从标准错误通道中读取数据
    readAllStandardErrot()
    // 设置输出到的文件,相当于前面的重定向
    setStandardOutputFile()
    // 设置错误到的文件
    setStandardErrorFile()
    // 读取标准输出
    read()
    readLine()
    

    QProcess提供了完成同步操作的函数:

    以下方法会导致进程阻塞,直到符合其中的某一状态:

    // 外部程序启动完毕
    waitForStarted()
    // 输出通道中的新数据是可读的
    waitForReadyRead()  
    // 输入通道中的数据被写入完毕
    waitForBytesWritten() 
    // 外部程序执行完毕
    waitForFinished()  
    

    另外要注意的是,如果在主线程(QApplication::exec())中调用这些函数,可能会造成当前用户界面不响应

    1
    QProcess::kill()
    QProcess::terminate()
    QProcess::close()
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^