• duilib进阶教程 -- TreeView控件的bug (9)


    一、不自动调整子控件的宽度(TreeView宽度小于260时)

      相信亲们用同样的代码,显示效果肯定和Alberl不一样吧~O(∩_∩)O~

      嘿嘿,仔细对比下,看看你们的列表头背景图片是下面这样的么?

      

      细心的小伙伴们应该早就发现了,可以看到右边那个箭头并没有完全显示出来,这是因为TreeView又调皮啦!

      最开始觉得是TreeView没有自动调整控件的宽度,去看了下代码,没啥问题,并且TestApp1里面那个tree也没出现这种现象,所以就一直以为是自己的XML代码出了问题。由于对duilib并不熟,所以只是稍微调试了一下,并没找到问题,就暂时没管。到后面其他效果都OK了,只剩下这个问题了,当然要解决啦,因为迅雷在不同分辨率下,大小是不一样的,所以Alberl也模仿了迅雷,结果发现在有些分辨率下,播放列表可以显示完全。而Alberl只是调整了窗口大小以及播放列表的宽度,再接着将背景图片放到TestApp1的tree里面,也OK,不过发现拖动TestApp1时,播放列表也有时显示不完全,再重现了几次这些情况,立马就发现问题了,TestApp1在小于一定宽度的时候,播放列表就显示不全了,按道理不管宽度多宽,子控件的宽度都会自动调整啊,于是量了一下出现问题的宽度,差不多是260左右,接着就去调代码,发现在CTreeNodeUI的构造函数里有这样一行代码:this->SetFixedWidth(250);  和260这么接近,于是就一下子解决了这个问题。嘿嘿,看来一个问题暂时解决不了,隔几天再过来看是很有道理滴~O(∩_∩)O~

      解决方案就是:

      将this->SetFixedWidth(250);  注释掉即可。

    二、不自动调整子控件的宽度(TreeNode的高度在一启动就超过TreeView时)

      在Alberl做完整个效果后,又发现了一个bug,

      最开始打开播放器的时候是下面这样的,

      

      好家伙,和迅雷差不多啊?

      嗯,这个是正常的,那么我们接着拖入一些文件,

      

      这个时候显示了垂直滚动条,并且调整了列表的宽度,也是正常的,好家伙,连滚动条都和迅雷一样了~O(∩_∩)O~

      不过当我们关掉软件,再次打开的时候,就成这样了:

      咦,怎么那三个按钮显示到外面去了? 并且点击无效!

      不过触发一次刷新后,就正常了,比如最小化,或者调整窗口大小。

      其实这个并不仅仅是那三个按钮显示到外面去了,可以发现表头的图片也不显示箭头了,很显然,和上面介绍的那个bug是类似的。

      不过经过初步调试,并没有找到问题,由于Alberl为了继续写教程,就没管这个问题了,去群里问了也没人回答,可能是因为用TreeView的比较少吧?于是Alberl就继续写教程啦~O(∩_∩)O~

      这个问题Alberl当然能够解决,但是Alberl不喜欢重复造轮子,肯定有大神们做过了,不过这个问题也不是什么难解决的问题,所以Alberl希望小伙伴们能够在Alberl写完这个教程之前,就提供解决方案~O(∩_∩)O~

      当然,如果Alberl写完这个教程后,还没人提供的话,就只有去调试了,都做到这一步了,也不差那么一点,干脆就解决它呗。

      有心想解决这个问题的大神请注意啦,Alberl在这里提供几个现象:

    1、如果给TreeView显示滚动条,那么就很容易观察是否有问题啦。用以下简单代码即可复现问题:

            <TreeView height="60" bkcolor="#FF00FF00" vscrollbar="true" hscrollbar="true" >
                <TreeNode height="33" bkcolor="#FF0000FF" />
                <TreeNode height="33" bkcolor="#FF00FFFF" />
            </TreeView>

      所以第一个问题如果加上hscrollbar="true",可以发现只要宽度小于260,就会出现滚动条,这就说明问题复现了,当然,这个问题已经解决啦。

    2、第二个问题如果加上vscrollbar="true" ,可以发现只要出现垂直滚动条,问题就复现啦。

      这个问题和动态添加或静态添加TreeNode没有关系,只要在软件初始化的时候,加上了TreeNode,当其显示垂直滚动条的时候,就可以复现问题。

      嗯,希望小伙伴们在Alberl写完教程之前,提供解决方案哟~O(∩_∩)O~


         教程接近尾声啦,第二个bug也解决了,请见http://www.cnblogs.com/Alberl/p/3404393.html



  • 相关阅读:
    改变字符串里面多个颜色
    悬浮按钮
    改变一串字体的多个颜色
    iOS上如何让按钮文本左对齐问题
    Swift中的willSet与didSet
    Swift语法之 ---- ?和!区别
    UIButton文字的显示位置,字体的大小
    javaweb要点复习 jsp和servlet
    常量指针和指针常量
    判断括号序列的合法性
  • 原文地址:https://www.cnblogs.com/Alberl/p/3403158.html
Copyright © 2020-2023  润新知