最近做项目遇到的问题,总结下。
有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的标题栏以及最大化、最小化、关闭,菜单按钮,我们就需要
setWindowFlags(Qt::FramelessWindowHint); 但是这样过后,我们就不能拖动窗口改变位置,以及拖动边缘改变窗口大小了。
有两种方案处理这种情况:
1.自己对mouseMoveEvent,mousePressEvent,mouseReleaseEvent 等事件进行处理。
2.Qt可以处理windows的消息。大家重新实现bool winEvent(MSG *message, long *result);(在此又一次感觉Qt的NB)
我刚开始使用第一种方法去实现的。移动窗口很容易做,大家可以去看看这个大大写的,比网上其他版本问题少些。
http://blog.csdn.net/aqtata/article/details/8902889
在窗口边缘按下鼠标拖动改变窗口大小就比较麻烦了。
我是这样做的:
在mousePressEvent 按下设置m_bPre

本文介绍了在Qt中创建无标题无边框窗口时,如何实现拖动和改变窗口大小的功能。作者分享了两种方法:一是通过处理mouseMoveEvent、mousePressEvent和mouseReleaseEvent事件,二是利用Qt的winEvent函数处理Windows消息。第一种方法存在拖动不准确和窗口抖动的问题,而第二种方法能够达到与有边框窗口相同的效果,通过处理WM_NCHITTEST消息让Windows帮助处理拖动和调整大小操作。
最低0.47元/天 解锁文章
486

被折叠的 条评论
为什么被折叠?



