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();
相关推荐
染翰18 分钟前
lua入门以及在Redis中的应用
开发语言·redis·lua
王者鳜錸28 分钟前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
兔老大RabbitMQ1 小时前
git pull origin master失败
java·开发语言·git
tt5555555555551 小时前
C/C++嵌入式笔试核心考点精解
c语言·开发语言·c++
xiao助阵1 小时前
python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
开发语言·python
科大饭桶2 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
扛麻袋的少年3 小时前
7.Kotlin的日期类
开发语言·微信·kotlin
钢铁男儿3 小时前
Python 正则表达式实战:解析系统登录与进程信息
开发语言·python·正则表达式
野生技术架构师3 小时前
2025年中高级后端开发Java岗八股文最新开源
java·开发语言
静若繁花_jingjing4 小时前
JVM常量池
java·开发语言·jvm