zoukankan      html  css  js  c++  java
  • 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的宽度小一点点,具体小多少我没去研究,大家自己看看吧。

            然后给大家贴一张正常运行的截图。

               

  • 相关阅读:
    mysql删选某列重复值
    apache伪静态
    nginx的伪静态
    如何对数据库进行优化
    ci的优缺点
    memcache状态说明
    sql中扩展插入语法
    若给个 个人收款的二维码,如何测试?
    安装自动化测试工具selenium
    PHP 线上项目 无法操作
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14329468.html
Copyright © 2011-2022 走看看