Qt raise()问题

项目场景:

需要将一个弹窗提升至最前面,那么弹出时直接使用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();
相关推荐
编码浪子20 分钟前
Rust 1.95 稳定版解读与生态新动向
开发语言·后端·rust
asdzx6722 分钟前
告别手动校对:使用 Python 对比两个 PDF 文档的差异
开发语言·python·pdf
Rust研习社24 分钟前
Rust 操作 Redis 从入门到生产级应用
开发语言·redis·后端·rust
菩提树下的凡夫31 分钟前
Qt环境下普通变量与原子变量的区别与联系
qt
xyq202432 分钟前
Memcached stats items 命令详解
开发语言
Evand J33 分钟前
【MATLAB例程】多传感器协同DOA目标跟踪与EKF滤波,输出动态目标轨迹、轨迹误差对比分析
开发语言·matlab·目标跟踪·滤波·定位·导航
csbysj202034 分钟前
《jEasyUI 自定义分页》
开发语言
初心未改HD36 分钟前
Go语言Context深度解析与工程实践
开发语言·golang
SilentSamsara40 分钟前
Python 内存管理:引用计数、循环垃圾回收与内存泄漏排查
开发语言·vscode·python·青少年编程·pycharm
傻啦嘿哟3 小时前
如何在 Python 中使用 colorama 库来给输出添加颜色
开发语言·python