正确做法
关于Qt碰到的QScrollArea滚动条不出现问题,直接去这边看就行了。下面的做法是不太正确的做法。因为被挤压的本质是因为ScrollArea无法滚动,解决滚动问题就解决了挤压问题。本来想删除文章的,想了下,当作提个醒好了。
错误示范!!!!!
这边的需求是动态往QScrollArea里添加提示控件,结果发现添加太多后导致提示控件变形。
如上图,提示控件已经被挤压得看不出原型。
使用了setWidgetResizable,发现没啥效果。QScrollArea在初始化完之后里面的scrollAreaWidgetContents也就是里面的Widget已经固定大小了。
最后用的方法是每次点击添加时候,重新设置QScrollArea里面的Widget大小,也就是固定死大小。
m_pScrollWidget->setMinimumSize(400, 100 + m_nScrollItemCount * 55);
m_pScrollWidget->setMaximumSize(400, 100 + m_nScrollItemCount * 55);
或者直接Fix
m_pScrollWidget->setFixedSize(400, 100 + m_nScrollItemCount * 55);
有尝试用过setGeometry(),但是不生效。应该是Widget是放在布局里,要设置最小的SIZE才能撑开布局。
因为每次要添加进去的控件高度都是一样的,所以每次重设的高度是初始高度 + 子控件数 * 子控件高度。根据需求计算高度。
如上图,反复点击按钮添加提示框也不会挤压在一块了。
如果有更好的方法欢迎评论区指出QAQ