因工作原因從來沒有用過Qt的我最近也接觸了一下Qt,在使用QScrollArea的時候發現UI添加進QScrollArea無法滑動,在網上找了很多教程也沒發現一個編程新手,能給新手講明白的教程。無奈之下只好自己琢磨,下面給大家分享下我使用QScrollArea的過程及其Demo。
兩種方法:
1.直接從設計中生成的QScrollArea(為什么從這個方法開始講是因為對新手來說容易理解一點。理解了這個直接用代碼寫應該也能理解的。)
①首先從設計中生成一個QScrollArea。
②添加UI(之前我一直單純的以為UI直接加入QScrollArea里面就行了,如果UI設置的坐標超過QScrollArea的大小QScrollArea就直接能滾動,結果發現不行,最后研究了一下午才弄懂為什么)
一直納悶為什么不能滾動,網上各種找資料,感覺網上大部分資料不是針對小白寫的,最后發現在設計中生成QScrollArea的時候自動送了一個Widget作為ScrollArea的子widget。而想要滾動畫面,就一定要這個widget比QScrollArea的size大的時候才可以,而且滾動的畫面也是這個widget。(QScrollArea就像是一扇窗戶,widget就像一塊畫布,畫布比窗戶大的時候,通過窗戶只能看到畫布的一部分,畫布不斷地滾動你就能看到畫布的其他內容)所以,一定要把UI放進這個widget,並且最后要設置Widget的大小。
③最后要設置QScrollArea的一個屬性widgetResizable,這個屬性用代碼生成的時候默認是false,而用設計生成默認是true,找到它把它設置成false。
這里在設計中創建是默認勾選的,去掉√,最后運行就ok了。
2.用代碼實現QScrollArea(大家看懂了上面的內容的話,下面的就大同小異了,直接給大家貼代碼)
結合代碼加注釋,相信大家能看懂的。然后在這里給大家解釋下widget設置size的問題。
如果你widget設置的widget和QScrollArea一樣大會出現這種情況
當你右邊的ScrollBar出現的時候占用了一些寬度,導致QScrollArea的widget相對的來說變小了(不是變小了,只是這樣解釋給大家聽)。這樣的情況下,widget的寬度就是大於QScrollArea的寬度的,這樣下面的ScrollBar也會出現。所以一般widget會設置比QScrollArea的寬度小一點點,具體小多少我沒去研究,大家自己看看吧。
然后給大家貼一張正常運行的截圖。