關於Qt的QScrollArea往裡面新增多個子控制元件時,子控制元件被壓縮的問題
阿新 • • 發佈:2021-02-13
這邊的需求是動態往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才能撐開佈局。
因為每次要新增進去的控制元件高度都是一樣的,所以每次重設的高度是初始高度 + 子控制元件數 * 子控制元件高度。根據需求計算高度。
如上圖,反覆點選按鈕新增提示框也不會擠壓在一塊了。