Qt调用 windows cmd窗口

为什么通过Qt start
调用cmd看不到cmd窗口呢,可以看到打印信息,但是cmd的窗口没有出现,有时候就一闪而过

waitForReadyRead()使用这个函数等待试试

img


如何解决这个问题呢

https://blog.csdn.net/lacoucou/article/details/122001776?ops_request_misc=&request_id=&biz_id=102&utm_term=QT%E7%AA%97%E5%8F%A3%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%98%BE%E7%A4%BAcmd%E7%AA%97%E5%8F%A3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-122001776.142^v47^pc_rank_34_default_2,201^v3^add_ask&spm=1018.2226.3001.4187看看这个呢

https://blog.csdn.net/xinqingwuji/article/details/114694724

不是很理解你的需求,你调用的命令是cmd /c "adb devices",本来就是执行adb devices后就结束的,一闪而过不是很正常吗
你要是建个bat文件写上adb devices,双击也是命令窗口一闪而过啊,一样的道理
真的要持续显示的话可以把命令加个pause改成"adb devices && pause"
因为看不到你别的代码,务必要保证这个QProcess能够存在到cmd运行结束,不要一start就被销毁了那也不行的,除非你用的是startDetached
然后再记得加上

process.setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)
{
    args->flags |= CREATE_NEW_CONSOLE;
    args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
});

注意如果既用上面这段方法又用startDetached,那么不能用静态方法的startDetached版本,必须

process.setProgram("cmd");
process.setArguments(QStringList() << "/c" << "adb devices && pause");
process.startDetached();

这个P设为全局变量试试