Window环境下Qt的消息获取
来源:互联网 发布:淘宝上抓卖保健品的 编辑:程序博客网 时间:2024/04/30 02:36
对于一个Widget程序,我们通常会看到下面的代码:
QApplication a(argc, argv);...return a.exec();
有过Win32程序开发经验的人都知道,在WinMain函数的最后有一个while循环来不断的接收消息和处理消息。我们大胆猜测Qt也使用了这种形式。那么这个循环可能出现的位置在a.exec()
中。通过调试Qt的源码,可以找到如下的调用过程:
int QApplication::exec(){ return QGuiApplication::exec();}int QGuiApplication::exec(){ ... return QCoreApplication::exec();}int QCoreApplication::exec(){ ... QEventLoop eventLoop; ... int returnCode = eventLoop.exec(); ...}int QEventLoop::exec(ProcessEventsFlags flags){ ... while (!d->exit.loadAcquire()) processEvents(flags | WaitForMoreEvents | EventLoopExec); ...}bool QEventLoop::processEvents(ProcessEventsFlags flags){ ... return d->threadData->eventDispatcher.load()->processEvents(flags);}bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags){ ... const bool rc = QEventDispatcherWin32::processEvents(flags); ...}bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags){ ... do { ... MSG msg; bool haveMessage; ... haveMessage = PeekMessage(&msg, 0, 0, 0, PM_REMOVE); ... }}
通过上面的代码,我们可以看出在Windows系统中,Qt中(QWidget)消息循环仍然是依照Windows程序的消息循环进行的。
阅读全文
0 0
- Window环境下Qt的消息获取
- window下Qt开发环境的搭建
- Java在window环境下获取计算机的资源信息
- Window下安装配置QT开发环境(Devcpp QT)
- QT window下环境的搭建与编译第一个程序
- window QT 环境下编写网络程序(一)---简易的UDP收发程序
- 在Qt中利用window下的DirectShow获取摄像头名称示例
- 如何在window下配置Qt以及IDE开发环境
- window 下 Qt 开发环境搭建和入门 钟表
- Window下的QT中文编程注意事项
- window QT 环境下编写网络程序(二)---简易的UDP收发程序移植到Linux环境
- Window下安装QT
- window下安装qt
- 【python】Window环境下JPype安装 及项目目录获取
- Window下JSP环境的搭建
- bochs在window环境下的调试
- bochs在window环境下的调试
- bochs在window环境下的调试
- (OK) Android-x86-7.1.1/ kernel 4.4.62
- 编写一个js函数用来求n的阶乘
- Clipboard.js 无需Flash的JavaScript复制粘贴库
- 2017,从杭州玛马吉科技有限公司出走之后
- 为不是函数的对象 'dbo.xxxx' 提供了参数。如果这些参数要作为表提示,则需要使用 WITH 关键字
- Window环境下Qt的消息获取
- 7.1模拟爆炸记
- BZOJ 4195: [Noi2015]程序自动分析 哈希表 并查集
- python | 读文件编码问题 | UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 34: illegal mu
- 七、在LinkedHashMap中,String a = new String("abcd");String b = new String("abcd");都作为key,会如何?
- 配置Mybatis
- IT人士必去的10个网站
- vue.js项目打包上线
- Java中的Runtime类