不知道大家有沒有遇到過這種需求,但是我搜索了很多地方,也試了很多次也沒很好地解決。
假如說我用一個QScrollArea(包含一個被控制的Widget),保持ScrollArea顯示區域與Widget的寬永遠相同,Widget的高根據自己需要變化,然后當Widget的高超過ScrollArea時,豎直滾動條出現。
類似于一個縱向堆積的List。
用Layout的話,那么長寬都會變,直接用QScrollArea,那么兩個滾動條都會出現,ScrollArea也不會管Widget寬高怎么變。
不知道有沒有大神能解決這個問題。
uj5u.com熱心網友回復:
setHorizontalScrollBarPolicy可以設定水平滾動條隱藏uj5u.com熱心網友回復:
這不是很簡單嗎?
uj5u.com熱心網友回復:
首先設定水平滾動條隱藏。注冊事件過濾器,僅Widget寬變化的時候調整ScrollArea的寬。
Widget中給一個QList<YourBaseClass*>, 自己封幾個介面 append, insert, remove等。
當List數量變化的時候呼叫自己寫的函式 adjustMyWidgetSize, 計算total height,重新調整Widget的高。
此時高度大于QScrollArea的話垂直滾動條自然出現了。
uj5u.com熱心網友回復:
那怎么讓橫向拉伸呢uj5u.com熱心網友回復:
你沒看懂我的意思,就是ScrollArea是個容器,假設就是MainWindow的CentralWidget,當我去拉伸視窗,那么ScrollArea大小就會改變對吧。。然后怎么樣讓里面的Widget寬度一直與ScrollArea保持一致(拉伸),當縮小視窗時,Widget橫向就被伸縮,縱向就看有沒有顯示不下而出現ScrollBar。uj5u.com熱心網友回復:
你自己說的橫向不用管的 只要scrollarea大小改變就會觸發resizeEvent 在resizeEvent里設定里面的widget和scrollarea一樣寬就行了 高度也一樣 在resizeEvent里調整
uj5u.com熱心網友回復:
那怎么讓橫向拉伸呢 setHorizontalScrollBarPolicy可以設定水平滾動條隱藏
你自己說的橫向不用管的 只要scrollarea大小改變就會觸發resizeEvent 在resizeEvent里設定里面的widget和scrollarea一樣寬就行了 高度也一樣 在resizeEvent里調整
uj5u.com熱心網友回復:
那怎么讓橫向拉伸呢 setHorizontalScrollBarPolicy可以設定水平滾動條隱藏
你自己說的橫向不用管的 只要scrollarea大小改變就會觸發resizeEvent 在resizeEvent里設定里面的widget和scrollarea一樣寬就行了 高度也一樣 在resizeEvent里調整
uj5u.com熱心網友回復:
你沒看懂我的意思,就是ScrollArea是個容器,假設就是MainWindow的CentralWidget,當我去拉伸視窗,那么ScrollArea大小就會改變對吧。。然后怎么樣讓里面的Widget寬度一直與ScrollArea保持一致(拉伸),當縮小視窗時,Widget橫向就被伸縮,縱向就看有沒有顯示不下而出現ScrollBar。 首先設定水平滾動條隱藏。
注冊事件過濾器,僅Widget寬變化的時候調整ScrollArea的寬。
Widget中給一個QList<YourBaseClass*>, 自己封幾個介面 append, insert, remove等。
當List數量變化的時候呼叫自己寫的函式 adjustMyWidgetSize, 計算total height,重新調整Widget的高。
此時高度大于QScrollArea的話垂直滾動條自然出現了。
是你沒看懂我的意思吧,控制元件我恰好做過了,我也沒去用Qt的LayOut,自己用代碼和事件過濾器就可以實作了,不就是一個resize了另一個也要resize,寬度一樣還顯示水平ScrollBar直接隱藏了就行,水平ScrollBar的顯示實際上應該是Widget的寬+垂直SCrollBar的寬是否大于ScrollArea的寬來判斷的。
再加一些屬性影片可以和QML里的那個List效果一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/267806.html
標籤:Qt
上一篇:android studio 4.1不能用Device File Explorer或者database inspector 打開database
