QEventLoop 调用exec()后返回-1

Fu_Lin_
博客专家认证
2020-01-10 10:03:07
开发的是Qt桌面应用,需要阻塞调用,开始调用exec是返回0正常的,quit也能及时响应,但是后面调用就会无脑返回-1,返回-1后调用过quit再次调用exec还是没用,还是返回-1。后面使用指针的方式,析构调用再重新New,调用exec还是返回-1,不知道为什么就会总是返回-1,请问是什么原因导致的啊,看了源码

QMutexLocker locker(&static_cast<QThreadPrivate *>(QObjectPrivate::get(d->threadData->thread))->mutex);
if (d->threadData->quitNow)
return -1;

if (d->inExec) {
qWarning("QEventLoop::exec: instance %p has already called exec()", this);
return -1;
}

好像就是前面判断返回的-1,因为后面的返回-1有打印,而我调用是没有打印的,不知道具体什么原因触发的的返回-1
...全文
983 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fu_Lin_ 2020-01-11
  • 打赏
  • 举报
回复
引用 3 楼 dext 的回复:
我觉得你应该贴你的代码,而不是Qt的代码。
我都代码就是 就是加载exec()疯狂返回-1
dext 2020-01-10
  • 打赏
  • 举报
回复
我觉得你应该贴你的代码,而不是Qt的代码。
feiyangqingyun 2020-01-10
  • 打赏
  • 举报
回复
波风,我知道是你
Fu_Lin_ 2020-01-10
  • 打赏
  • 举报
回复
引用 1 楼 feiyangqingyun 的回复:
波风,我知道是你
我要被你笑死,自己已经规避了这个问题,但是触发的原因分析可能是多次调用没释放吧,反正现在也算是曲线解决了

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧