已解决
Qt raise()问题
来自网友在路上 155855提问 提问时间:2023-09-26 05:39:04阅读次数: 55
最佳答案 问答题库558位专家为你答疑解惑
项目场景:
需要将一个弹窗提升至最前面,那么弹出时直接使用raise()即可。
问题描述:
使用QDialog::raise()时,偶发界面阻塞卡死现象。
原因分析:
QDialog::raise()函数是置于顶部的作用,但是如果使用不当,会导致界面线程卡死(弹窗是在界面线程弹出的),因为QDialog::raise()会阻塞当前线程,直到对话框置于顶部。
解决方案:
异步调用QDialog::raise(),通过QTimer::singleShot()实现。
QTimer::singleShot()是在主线程的的循环中调用的,因此使用它并不会阻塞主线程。
用法示例:
QDialog* dialog = new QDialog();
dialog->show();
QTimer::singleShot(0, dialog, &QDialog::raise);或者:
QDialog* dialog = new QDialog();
QTimer::singleShot(1, dialog, &QDialog::raise);
dialog->show();
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"Qt raise()问题":http://eshow365.cn/6-13701-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 【Vue2.0源码学习】生命周期篇-模板编译阶段(template)
- 下一篇: SWC 流程