Qt 使用QScrollArea無法滑動的解決辦法


  因工作原因從來沒有用過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的寬度小一點點,具體小多少我沒去研究,大家自己看看吧。

        然后給大家貼一張正常運行的截圖。

           


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM