超級實用的屬性瀏覽器控件--QtTreePropertyBrowser


一、源碼下載

Qt庫封裝了很多控件,種類也比較多,其中容器控件包括:表格、樹和列表。

使用過QtDesigner的同學應該都知道,這個工具中有一個屬性編輯器,是一個屬性瀏覽器控件,就像vs中控件屬性面板一樣。

今天我們就來介紹一款使用QTreeWidget封裝的屬性控件QtTreePropertyBrowser,這個控件現在還沒有被Qt正式的收錄。

要想使用這個QtTreePropertyBrowser庫,首先我們需要去github上去下載源碼,然后自行編譯。

二、代碼編譯

如下圖所示,是github上的代碼提交記錄,仔細看提交時間,距離現在已經有9年過去了。

因此這個代碼編譯起來還是比較費勁的,如果覺着編譯費勁,也可以直接下載別人已經編譯好了的QtPropertyBrowser庫,或者留下郵箱我發送我編譯好的demo。這里我自己也是想熟悉這個庫,並且使用起來,因此自己決定對這個庫中的語法錯誤進行解決,最后順利到達效果。

源碼升級過程中主要參考了Qt5.4.2編譯 qtpropertybrowser-2.51(從4修改到5的除錯過程)這篇文章,還有我自己處理的幾個小問題

使用vs中的qt-addin插件直接打開pro文件,打開工程后,如下圖所示。

接下來是修改編譯錯誤,大概有如下9個錯誤類型,大多都數都可以直接使用全局替換。

1、intersect函數替換為intersected

//舊代碼
area.intersect(QRect(0, 0, width(), height()));
//新代碼
area.intersected(QRect(0, 0, width(), height()));

2、移除UnicodeUTF8

移除QApplication::UnicodeUTF8,別忘記移除這個參數之前的逗號,很重要,要不然編譯不過。

3、QtGui模塊拆分

Qt4到Qt5有一個很大的變化,就是很多QtGui模塊中的東西被拆分到了QtWidgets模塊中。

這里我們使用vs打開工程后,編譯時提示我們模塊找不到的話,需要把很多的QtGui改成QtWidgets,就像下面這樣

//舊代碼
#include <QtGui/QWidget>
//新代碼
#include <QtWidgets/QWidget>

4、Q_TYPENAME錯誤

全局替換,直接把Q_TYPENAME替換成typename

5、qVariantValue錯誤

全局替換,直接把qVariantValue()替換成qvariant_cast()

6、qFindChildren錯誤

Qt5時qFindChildren()被廢除了,可以用findChildren()替代

//舊代碼
QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager);  
//新代碼
QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();  

7、setMovable移除

//舊代碼
setMovable()
//新代碼
setSectionsMovable()

8、setMovable移除

//舊代碼
setResizeMode()
//新代碼
setSectionResizeMode()

9、添加QtWidgets模塊

一定要添加上QtWidgets模塊,如下圖所示,每個工程都需要這樣設置

三、運行結果

程序編譯完成之后,會生成如下幾個可執行程序。

嘗試運行其中的simple.exe可執行程序,結果如下,看起來是不是還不錯。

四、參考文章

Qt-解鎖QtPropertyBrowser控件

Qt5.4.2編譯 qtpropertybrowser-2.51(從4修改到5的除錯過程)


以上的內容,基本上就是本篇文章的內容所有內容啦!表格樹控件可以使用起來了。希望可以幫到大家。


如果您覺得文章不錯,不妨給個 打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!!




很重要--轉載聲明

  1. 本站文章無特別說明,皆為原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords

  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。



免責聲明!

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



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