QEventLoop
介绍
- 提供了一种异步编程的方式。
- 本地创建的QEventLoop并不会影响主Application的逻辑。
- 比while等待效率高。
使用
#include <QCoreApplication> #include <QEventLoop> #include <QObject> #include <iostream> QEventLoop loop; int a = 3; // 线程A void funcA() { // do something loop.exec(); // 进入事件循环 std::cout << a << std::endl; // a == 4 } // 线程B class MyObject : public QObject { Q_OBJECT public slots: void slotAdd() { ++a; loop.exit(); // 退出事件循环 } }; void signalAdd(); int main(int argc, char* argv[]) { QCoreApplication app(argc, argv); MyObject objB; QObject::connect(&app, SIGNAL(signalAdd()), &objB, SLOT(slotAdd())); // 启动线程A QThread threadA; threadA.start(); QMetaObject::invokeMethod(&threadA, "funcA", Qt::QueuedConnection); // 启动线程B QThread threadB; threadB.start(); QMetaObject::invokeMethod(&threadB, "signalAdd", Qt::QueuedConnection); return app.exec(); }
本文来自博客园,作者:flxx,转载请注明原文链接:https://www.cnblogs.com/faithlocus/p/16769447.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话