这边的需求是动态往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