问题遇到的现象和发生背景
在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等信息是可以再槽函数接受到并且打印出来的,如图所示
代码
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打开的模拟器窗口却不行,如图所示
代码
我想要达到的结果
用qprocess的start打开的模拟器可以在start的xwininfo中输出标准信息并打印出来