找回密码
 立即注册
收起左侧

qtoolbar和qmenu导致0,0位置不正确的问题

1
回复
483
查看
[复制链接]

尚未签到

来源: 2023-9-9 06:45:23 显示全部楼层 |阅读模式
5Qter豆
各位大佬, 小弟刚从mfc转到qt
mfc里菜单栏和工具栏都是frame类的子控件, 所以在view类客户区里重绘, 比如在(0,0)点画画, 就是在菜单栏和工具栏下面的
但是在qt里遇到了这个问题, 在我添加了菜单栏和工具栏后, 重写qpaintevent或者添加一些子控件,
如果是在比较小的Y位置, 就会被菜单栏和工具栏遮挡

自己研究了下大概是知道qt里菜单栏和工具栏都是qwidget子类, 不分什么客户区和非客户区
但是问题是, 如果qmenubar或者qtoolbar都固定高度了还好  我能算出偏差来
但是如果给了拉伸策略, 那么随着我icon和text的变化, 这两个高度会自适应, 但是qtoolbar使用height(), 读出来的永远是30, 但是实际高度又肯定大于30

请问下各位大佬们, 这种情况下, 有什么好办法吗

回复

使用道具 举报

累计签到:7 天
连续签到:2 天
2023-10-21 17:14:19 显示全部楼层
根据描述现象推测是由于提前使用了控件导致获取的高度是30,不要在构造函数中直接使用控件,要等控件创建后再使用,可以在showEvent()里获取高度并使用,也可以在resizeEvent()事件里重设高度,需求描述了是自适应,那么一般不设置固定高度,在进行布局后,控件都是自适应的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了