1、不自動調整子控件的寬度(TreeView寬度小於260時)html
相信親們用一樣的代碼,顯示效果確定和Alberl不同吧~O(∩_∩)O~函數
嘿嘿,仔細對比下,看看大家的列表頭背景圖片是下面這樣的麼?ui
細心的小夥伴們應該早就發現了,能夠看到右邊那個箭頭並無徹底顯示出來,這是由於TreeView又調皮啦!this
最開始以爲是TreeView沒有自動調整控件的寬度,去看了下代碼,沒啥問題,而且TestApp1裏面那個tree也沒出現這種現象,因此就一直覺得是本身的XML代碼出了問題。因爲對duilib並不熟,因此只是稍微調試了一下,並沒找到問題,就暫時沒管。到後面其餘效果都OK了,只剩下這個問題了,固然要解決啦,由於迅雷在不一樣分辨率下,大小是不同的,因此Alberl也模仿了迅雷,結果發如今有些分辨率下,播放列表能夠顯示徹底。而Alberl只是調整了窗口大小以及播放列表的寬度,再接着將背景圖片放到TestApp1的tree裏面,也OK,不過發現拖動TestApp1時,播放列表也有時顯示不徹底,再重現了幾回這些狀況,立馬就發現問題了,TestApp1在小於必定寬度的時候,播放列表就顯示不全了,按道理無論寬度多寬,子控件的寬度都會自動調整啊,因而量了一下出現問題的寬度,差很少是260左右,接着就去調代碼,發如今CTreeNodeUI的構造函數裏有這樣一行代碼:this->SetFixedWidth(250); 和260這麼接近,因而就一會兒解決了這個問題。嘿嘿,看來一個問題暫時解決不了,隔幾天再過來看是頗有道理滴~O(∩_∩)O~spa
解決方案就是:調試
將this->SetFixedWidth(250); 註釋掉便可。code
2、不自動調整子控件的寬度(TreeNode的高度在一啓動就超過TreeView時)htm
在Alberl作完整個效果後,又發現了一個bug,blog
最開始打開播放器的時候是下面這樣的,教程
好傢伙,和迅雷差很少啊?
嗯,這個是正常的,那麼咱們接着拖入一些文件,
這個時候顯示了垂直滾動條,而且調整了列表的寬度,也是正常的,好傢伙,連滾動條都和迅雷同樣了~O(∩_∩)O~
不過當咱們關掉軟件,再次打開的時候,就成這樣了:
咦,怎麼那三個按鈕顯示到外面去了? 而且點擊無效!
不過觸發一次刷新後,就正常了,好比最小化,或者調整窗口大小。
其實這個並不只僅是那三個按鈕顯示到外面去了,能夠發現表頭的圖片也不顯示箭頭了,很顯然,和上面介紹的那個bug是相似的。
不過通過初步調試,並無找到問題,因爲Alberl爲了繼續寫教程,就沒管這個問題了,去羣裏問了也沒人回答,多是由於用TreeView的比較少吧?因而Alberl就繼續寫教程啦~O(∩_∩)O~
這個問題Alberl固然可以解決,可是Alberl不喜歡重複造輪子,確定有大神們作過了,不過這個問題也不是什麼難解決的問題,因此Alberl但願小夥伴們可以在Alberl寫完這個教程以前,就提供解決方案~O(∩_∩)O~
固然,若是Alberl寫完這個教程後,還沒人提供的話,就只有去調試了,都作到這一步了,也不差那麼一點,乾脆就解決它唄。
有心想解決這個問題的大神請注意啦,Alberl在這裏提供幾個現象:
一、若是給TreeView顯示滾動條,那麼就很容易觀察是否有問題啦。用如下簡單代碼便可復現問題:
<TreeView height="60" bkcolor="#FF00FF00" vscrollbar="true" hscrollbar="true" > <TreeNode height="33" bkcolor="#FF0000FF" /> <TreeNode height="33" bkcolor="#FF00FFFF" /> </TreeView>
因此第一個問題若是加上hscrollbar="true",能夠發現只要寬度小於260,就會出現滾動條,這就說明問題復現了,固然,這個問題已經解決啦。
二、第二個問題若是加上vscrollbar="true" ,能夠發現只要出現垂直滾動條,問題就復現啦。
這個問題和動態添加或靜態添加TreeNode沒有關係,只要在軟件初始化的時候,加上了TreeNode,當其顯示垂直滾動條的時候,就能夠復現問題。
嗯,但願小夥伴們在Alberl寫完教程以前,提供解決方案喲~O(∩_∩)O~
教程接近尾聲啦,第二個bug也解決了,請見http://www.cnblogs.com/Alberl/p/3404393.html