Qt 取消window标题栏事件失效

来源:互联网 发布:网络舆论引导 编辑:程序博客网 时间:2024/06/03 23:00

这篇文章应该是昨天的 , 昨天布局一个游戏代练平台的项目,因为界面的美观需要隐藏window自带的标题栏,重新自定义标题栏. 我想这种事情很多人都做过,现在大多数项目中都会为了用户体验而重新定义界面的布局. 当我去掉标题栏的时候( Qt5 隐藏标题栏 setWindowFlag( Qt::FrameLessWIndowHint) ,编译运行,运行起来,标题栏隐藏了 , 但是出现了另外一个问题,我的界面上的所有的控件的效果都没了 , 比如说 ,按钮点击效果失效了.还有QTableWidget 点击选中的呈现的行颜色也不见了 , 甚至于 QComboBox 失去了他原来的功能,更有甚至不能点击功能性的丧失.当时就特别的郁闷.
当时我的第一反应就是事件传递的原因,因为我在该项目中的大量的使用了”事件捕捉”就是我们常说的事件过滤,当我把所有的事件过滤全部注释掉的时候还是不可以.无奈之后走了特别多的弯路,已经束手无策的时候,准备重新将代码重新复制新建 Qt类重新实现( 因为当时我已经写demo测试过去掉标题栏之后的QWidget中的组件是没有任何影响的,已经确定就是我的代码的问题),重新实现后是好的 , 事件也接受传递.当我布局完成之后,原来的错误又重新出现了.然后我又重新打破布局.事件传输又正常了.
各位看官们,已经猜到了 ,是布局的问题,最后得出结论, 当Qt Creator 实现布局,把 边距全部设置为零,你的界面组件全部覆盖window组件时,然后又把标题栏去掉, 事件就是受到影响.解决办法就是,去掉标题栏之后留一点点的边距.

纯文字 描述;

阅读全文
0 0
原创粉丝点击