LLLE36联系v 2023-07-09 20:22 采纳率: 20%
浏览 42

readAllStandardOutput没法打印出来,怎么做

问题遇到的现象和发生背景

在qt中使用qprocess的start打开visualboyadvance模拟器窗口去运行游戏,再用xwininfo查询模拟器窗口的Windows ID等其他信息,接着建立这个线程与槽函数outlog的连接,利用outlog函数去接受readAllStandardOutput并且在Application Output打印出来。
现在的问题是没办法将这个线程在终端的标准输出打印出来,也就是没办法打印出xwininfo查询模拟器窗口得到Windows ID等其他信息,请问该怎么解决

操作环境、软件版本等信息

操作环境:Ubuntu16.04
软件版本:qt5.5.1 visualboyadvance-m-2.1.1

尝试过的解决方法

在终端单独打开visualboyadvance模拟器窗口,然后再在qt中用qprocess的start运行xwininfo -name去查询WindowsID等信息是可以再槽函数接受到并且打印出来的,如图所示

img


img

代码
void Widget::on_pushButton_clicked()
{
    myprocess = new QProcess(this);
//    myprocess->start("visualboyadvance-m /home/game/game_files/013-03超级街头霸王2.gba");//开启游戏
//    if (!myprocess->waitForStarted())//检查进程是否成功启动
//    {
//       qDebug() << "Failed to start emulator process.";
//    }
//    myprocess->start("xwininfo", QStringList() << "-name" << "\"013-03超级街头霸王2 - VisualBoyAdvance-M 2.1.1\"");//获取模拟器窗口的WindowsID等其他信息
//    myprocess->start("xwininfo", QStringList() << " -name" << " \"013-03超级街头霸王2 - VisualBoyAdvance-M 2.1.1\"");
//    myprocess->start("ls /home");
    myprocess->start("xwininfo -name \"013-03超级街头霸王2 - VisualBoyAdvance-M 2.1.1\"");
    connect(myprocess, SIGNAL(readyReadStandardOutput()), this, SLOT(outlog()));//建立myprocess发出标准输出信号与槽函数outlog的连接

}

void Widget::outlog()
{
    //打印出标准输出的内容
    QString abc;
    abc=myprocess->readAllStandardOutput();
    qDebug()<<abc<<endl;
}

但在qt中用qprocess->start打开的模拟器窗口却不行,如图所示

img

代码

img

我想要达到的结果

用qprocess的start打开的模拟器可以在start的xwininfo中输出标准信息并打印出来

img

  • 写回答

2条回答 默认 最新

  • LLLE36联系v 2023-07-09 20:41
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 7月9日

悬赏问题

  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。
  • ¥15 如何扩大AIS数据容量
  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo