Qt——透明无边框Widget的bug
2024-10-16 15:24:00
Experience
最近在封装一些类的时候,打算做一个窗口框架,能实现拖动、缩放、最大最小化、基本样式等功能,可不慎遇见一件无比蛋疼的事情,QWidget最小化后再恢复正常界面,最小化按钮居然仍处于hover状态,而且其它所有控件都看不到hover时的样式。
之前在外面百度找遍了没找到解决办法,周围的人听我描述了问题之后大多不屑理会,无奈只好回来谷歌,哇咔咔,终于找到了。
问题描述
先听听别人是怎么说的——我有一个透明(Qt::WA_TranslucentBackground)无边框(Qt::FramelessWindowHint)的Widget。当我的界面(通过按钮或其它方式)最小化之后,通过编程的方式(Message Box或showNormal()函数)还原界面,程序就不再响应paint事件了。
我在一个单独的界面中重现了这个问题,程序启动后点击按钮,使之最小化,3秒之后恢复正常界面。还原之后,按钮不再响应mouse over event从而改变它的样式,但是你可以点击它,使界面再次最小化。一旦你点击按钮,一切都恢复正常了。注意:如果程序还原并处于其它界面后面,此时你手动将它放到最前面,该问题不会出现。
Something else
我自己电脑上装的是qt5.5.0,这个问题不会出现,所以应该是以前的qt版本中会出现这个问题,现在已经修复了。
如果使用旧版本的qt,该如何解决这个问题呢?
我自己没想到解决办法,且看别人是怎么做的吧——
1
2
3
最新文章
- ASP.NET MVC Model绑定(二)
- mysql 主从同步原理
- Evolutionary Computing: 4. Review
- node-webkit教程(11)Platform Service之shell
- Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archive
- c++ ip地址相关
- TimesTen的安装和连接
- UVA1588(Kickdown)。
- RH253读书笔记(5)-Lab 5 Network File Sharing Services
- MyBatis源码解析【4】反射和动态代理
- CYQ.Data 对于分布式缓存Redis、MemCache高可用的改进及性能测试
- 如何安装MySQL5.5.62
- python中使用Opencv进行车牌号检测——2018.10.24
- 服务器死机 导致 mongo 挂掉
- Excel列名和列序号转换
- 20155211 网络对抗 Exp9 Web安全基础实践
- CTO、CIO
- UVa 714 Copying Books - 二分答案
- html选择器
- stringBuild置空方法