QT应用编程: 使用QEventLoop实现事件循环

简介: QT应用编程: 使用QEventLoop实现事件循环

一、环境介绍

操作系统: win10 64位


QT版本:  QT5.12.6


二、QEventLoop类

QEventLoop类提供了一种进入和离开事件循环的方法。

在任何时候,你都可以创建一个QEventLoop对象并对其调用exec(),以启动本地事件循环,在事件循环中,调用exit()将强制exec()返回。另请参见QAbstractEventDispatcher。

image.png

QEventLoop 常规运用环境 :   在主界面里执行某个代码之前,需要等待某个条件成立,但是这个条件是其他线程异步通知的;这时,主线程需要等待这个条件成立才能继续执行;这时如果不想卡主界面,就可以使用QEventLoop完成。

示例1:

 QEventLoop loop;
void widget::on_pushButton1_clicked()
{
........ 需要等待某个条件成立
    loop.exec();
.........
继续执行代码.
}
//槽函数: 等待的条件满足时进入
void widget::on_timeclicked()
{
..........
loop.exit();  //退出事件循环
}

示例2:

void widget::on_pushButton_clicked()
{
........ 需要等待100毫秒的时间.等待某个条件成立
    //事件循环: 在指定时间后执行某件事. 不卡UI界面
    QEventLoop loop;
    QTimer::singleShot(100, &loop, SLOT(quit()));
    loop.exec();
.........
继续执行代码.
}


目录
相关文章
|
23天前
|
监控 安全 开发者
【Qt 并发 】理解Qt中事件循环与并发机制的协同工作
【Qt 并发 】理解Qt中事件循环与并发机制的协同工作
127 3
|
25天前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
76 0
|
30天前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
44 2
|
30天前
|
XML JSON 算法
C++视角下的Qt按钮:从基础应用到高级定制(一)
C++视角下的Qt按钮:从基础应用到高级定制
86 2
|
30天前
|
存储 Linux API
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(三)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
31 1
|
30天前
|
消息中间件 Linux 数据处理
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(二)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
30 1
|
23天前
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
102 3
|
25天前
|
程序员 编译器 C++
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(一)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
43 0
|
23天前
|
测试技术 API UED
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
68 1
|
25天前
|
设计模式 开发框架 编译器
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(二)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
34 0

推荐镜像

更多