【记录】有道词典导致Qt程序卡死,并且内存泄漏问题

原文链接:http://blog.csdn.net/oLuoJinFanHua12/article/details/100667592

 

有道词典导致Qt程序卡死的问题我已经发现了一段时间,之前以为是自己程序的问题,后面多方验证才发现这个问题是我更新到Qt5.12后产生的。

下面是该bug的重现条件:

1.打开有道词典,将屏幕取词开关打开

在这里插入图片描述

2.在自己的程序中添加一个QTreeView或者QTreeWidget,并且添加一些数据

没错,这个bug主要是在QTreeView或QTreeWidget上引发,其他控件我还没有发现存在该问题。我这里就使用Qt的帮助文档软件来测试:
在这里插入图片描述

3.将鼠标放到上面的红色框选区域中停顿1秒左右

软件卡死。打开任务管理器可以看到Qt帮助软件的内存正在疯狂增长,并且CPU居高不下:
在这里插入图片描述
其实,有人已经向Qt反馈了该问题https://bugreports.qt.io/browse/QTBUG-77974,不过目前这个问题还未解决。Qt的开发人员表示会在Qt5.13.2和Qt5.14上解决该问题,不过在此之前我们可以临时解决一下该问题,以下是我提供的一个临时解决方案。

临时解决方案

通过翻阅源代码发现,该问题引起的位置位于Qt底层windows部分的uiautomation模块中,而通过消息分析发现引起该问题的Windows消息为WM_GETOBJECT。修改uiautomation内的代码比较困难,并且需要编译Qt源代码,太过麻烦,因此,我选择屏蔽掉WM_GETOBJECT消息,这里是关于WM_GETOBJECT的解释https://docs.microsoft.com/zh-cn/windows/win32/winauto/wm-getobject
以下是临时解决方案的代码,写在main.cpp中即可:

#include <qt_windows.h>
#include <QApplication>
#include <QTreeWidget>
#include <QAbstractNativeEventFilter>
//QTBUG-77974
class MyFilter : public QAbstractNativeEventFilter
{
public:bool nativeEventFilter(const QByteArray& eventType, void* message, long* result) override{MSG* msg = (MSG*)message;if (msg->message == WM_GETOBJECT)return true;return false;}
};int main(int argc, char *argv[])
{QApplication a(argc, argv);a.installNativeEventFilter(new MyFilter);QTreeWidget w;w.exec();return a.exe();
}

过滤掉WM_GETOBJECT之后应用程序不会再被有道词典卡死了,等官方解决该问题后就可以删掉这段代码了。

Node: 实测Qt5.13.2版本下已解决该问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt 子窗口写到线程就卡死_深入了解QT消息循环及线程相关性

一、什么是Qt消息循环 Qt消息循环,就是从一个队列中不断取出消息,并响应消息的过程。窗体的鼠标、键盘、输入法、绘制,各种消息,都来自于Qt的消息循环。以Windows操作系统为例,Qt接管Windows原生窗口消息,并翻译成Qt的消息,派发给程序下的各个子对象、子QWidget等,通过…

QT编程过程中遇到的问题

QT编程过程中遇到的问题 &#xff08;一&#xff09;QT卡死&#xff08;二&#xff09;mingw转msvc编码问题&#xff08;三&#xff09;内存泄漏问题1. vld检查内存泄漏问题2. QTextEdit造成内存泄漏 &#xff08;四&#xff09;文件路径问题&#xff08;5&#xff09;快速生成…

QT 界面在linux下调试时卡死的问题

文章目录 一、问题描述二、解决方法&#xff08;1&#xff09;强杀进程&#xff08;2&#xff09;安装xnest&#xff08;3&#xff09;qt creater配置 一、问题描述 xnest是一个虚拟的X服务端&#xff0c;其窗口可以运行界面程序&#xff0c;电脑在调试弹窗时界面容易冻住&…

3月9日 19:30 | 首场大模型专场来袭

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 哔哩哔哩直播通道 扫码关注AI TIME哔哩哔哩官方账号预约直播 2023年3月9日 19:30-21:30 谢天宝&#xff1a; 香港大学一年级博士生&#xff0c;由余涛教授&#xff08;主要&#xff09;和孔令鹏教授指导&#…

AGI—从GPT和大型语言模型中汲取的经验教训

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (下)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

自动化系列(五)Python实现企业微信机器人

自动化系列&#xff08;五&#xff09;Python实现企业微信机器人 上期介绍了如何定时推送数据到钉钉群&#xff0c;这次介绍如何定时推送数据到企业微信群。 添加自定义机器人 创建群聊&#xff1a;企业微信没有场景群&#xff0c;可以拉三五好友进群&#xff0c;然后再给他…

企业微信机器人 api 使用

key 来自&#xff1a; 一、发送消息 function sendText(key , text , mentioned []) {try {axios({method: post,url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key key,data: {msgtype: text,text: {content: text,mentioned_list: mentioned}}})} catch (er…

每个人都可以用的开源微信机器人

经历过UOS web协议的重放荣光&#xff0c;又经过一段时间的封禁&#xff0c;又有大神把UOS web协议救回来了。免费的快乐又重新回来了&#xff0c;不是吗? 这意味着每个人都可以用Wechaty搞事情了&#xff0c;什么服务器通知&#xff0c;定时给女友发微信&#xff0c;群发消息…

WorkTool(一)企业微信群管理机器人实现

简介 WorkTool 主程序是一个开源的安卓应用 APP&#xff0c;不需要 root 权限就可以直接安装。 源码友情链接 测试发送消息 API 使用 WorkTool APP 来自动执行一个自己企微里的账号&#xff0c;并通过后台调用对应的 API 来驱动机器人自动执行任务&#xff0c;如收发消息、自…

用企业微信机器人搞事情

从把办公通信工具从微信迁移到企业微信后&#xff0c;群组里面多了一个叫“群聊机器人”的功能&#xff0c;如下图&#xff0c;我在某个群建了一个叫“测试”的机器人。 听名字会让人以为群里面有个能自动答复的机器人&#xff0c;它就能跟他对话。其实并不能&#xff0c;他的功…

VX线报机器人的使用

使用步骤&#xff1a; 1. 下载上面的压缩包&#xff0c;并解压到同一个文件夹&#xff0c;没有解压是使用不了的 2. 双击Update.exe来下载机器人框架核心文件 3. 把com.bbs.weiququ.vlw.dll文件移到Plugin文件夹下 4.双击【我的框架.exe】来启动机器人框架 5.在我的帐号页…

AI热潮来袭||网友:AI会不会抢自己的饭碗啊~~~

ChatGPT还没搞懂&#xff0c;平地一声雷&#xff0c;GPT-4重磅发布&#xff01;瑟瑟发抖的吃瓜群众逐渐变多&#xff1a;AI会不会抢自己的饭碗啊~~~ 答案是&#xff1a;会&#xff01; 人工智能助手“阿里小蜜”承担95%的客服咨询&#xff1b; 机器人“天巡”接替运维人员以…

用友助力中核集团建设财务共享中心新华发电分中心,实现业财融合

企业在进行决策时需要大量的财务信息作为依据&#xff0c;财务共享中心的建设可以帮助企业将财务和业务分离后重新有序融合&#xff0c;使得决策数据更有价值&#xff0c;也帮助企业的管理和决策更加贴合实际。 新华水力发电有限公司&#xff08;简称“新华发电”&#xff09;…

【占星学】天蝎座女生性格特点

一、性格特点 天蝎座女的个性非常细腻&#xff0c;拥有非常敏锐的观察能力&#xff0c;外表总是一副冷漠的样子&#xff0c;但其实她们内心非常希望能够有一个人懂自己&#xff0c;天蝎座的女生其实是典型的外冷内热。此外&#xff0c;天蝎座的女生骨子里有争强好胜的性格&…

html星座代码,各星座详细页面.html

&#xfeff;各星座详细页面 $axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; }; $axure.utils.getOtherPath function() { return resources/Other.html; }; $axure.utils.getReloadPath function() { return resources/reload…

如何搭建产品知识库?让产品知识库管理更有序高效!

任何一款成功的产品&#xff0c;都需要将自己的产品知识&#xff08;内部制作和外部搜集&#xff09;进行汇总和整理&#xff0c;帮助用户可以运用产品知识库中的内容&#xff0c;去解决实际应用中存在的问题。 有序高效的知识库管理 当一款产品从研发到投入使用&#xff0c;整…

基于GPT搭建私有知识库聊天机器人(一)实现原理

文章链接&#xff1a; 基于GPT搭建私有知识库聊天机器人&#xff08;二&#xff09;环境安装 基于GPT搭建私有知识库聊天机器人&#xff08;三&#xff09;向量数据训练 基于GPT搭建私有知识库聊天机器人&#xff08;四&#xff09;问答实现 1、成品演示 支持微信聊天支持网…

对阿,为什么大学程序设计老师不去外面公司当程序员?

我在大学的时候&#xff0c;老师都感觉很厉害的样子&#xff0c;一节课讲下来不带断句的&#xff08;当然也碰到过一本书照着念不错一个字的&#xff09;大学老师的工资应该没程序员的工资高吧&#xff0c;这其中存在着怎样的原因呢&#xff1f; 先看看网友是怎么吐槽的&#x…

程序员们,你会考虑使用中文编程吗?

众所周知&#xff0c;编程语言有一条无形的“鄙视链”。 Java和C#相互不服&#xff0c;并且看不起写Python的&#xff0c;Python看不起PHP&#xff0c;PHP看不起前端。而中文编程就在这个语言“鄙视链”的底端艰难生存。 有人对中文编程嗤之以鼻&#xff0c;相比于“人生苦短…