目錄html
Qt庫封裝了不少控件,種類也比較多,其中容器控件包括:表格、樹和列表。git
使用過QtDesigner的同窗應該都知道,這個工具中有一個屬性編輯器,是一個屬性瀏覽器控件,就像vs中控件屬性面板同樣。github
今天咱們就來介紹一款使用QTreeWidget封裝的屬性控件QtTreePropertyBrowser,這個控件如今尚未被Qt正式的收錄。瀏覽器
要想使用這個QtTreePropertyBrowser庫,首先咱們須要去github上去下載源碼,而後自行編譯。編輯器
以下圖所示,是github上的代碼提交記錄,仔細看提交時間,距離如今已經有9年過去了。函數
所以這個代碼編譯起來仍是比較費勁的,若是覺着編譯費勁,也能夠直接下載別人已經編譯好了的QtPropertyBrowser庫,或者留下郵箱我發送我編譯好的demo。這裏我本身也是想熟悉這個庫,而且使用起來,所以本身決定對這個庫中的語法錯誤進行解決,最後順利到達效果。工具
源碼升級過程當中主要參考了Qt5.4.2編譯 qtpropertybrowser-2.51(從4修改到5的除錯過程)這篇文章,還有我本身處理的幾個小問題ui
使用vs中的qt-addin插件直接打開pro文件,打開工程後,以下圖所示。spa
接下來是修改編譯錯誤,大概有以下9個錯誤類型,大多都數均可以直接使用全局替換。.net
//舊代碼 area.intersect(QRect(0, 0, width(), height())); //新代碼 area.intersected(QRect(0, 0, width(), height()));
移除QApplication::UnicodeUTF8,別忘記移除這個參數以前的逗號,很重要,要否則編譯不過。
Qt4到Qt5有一個很大的變化,就是不少QtGui模塊中的東西被拆分到了QtWidgets模塊中。
這裏咱們使用vs打開工程後,編譯時提示咱們模塊找不到的話,須要把不少的QtGui改爲QtWidgets,就像下面這樣
//舊代碼 #include <QtGui/QWidget> //新代碼 #include <QtWidgets/QWidget>
全局替換,直接把Q_TYPENAME替換成typename
全局替換,直接把qVariantValue()替換成qvariant_cast()
Qt5時qFindChildren()被廢除了,能夠用findChildren()替代
//舊代碼 QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager); //新代碼 QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();
//舊代碼 setMovable() //新代碼 setSectionsMovable()
//舊代碼 setResizeMode() //新代碼 setSectionResizeMode()
必定要添加上QtWidgets模塊,以下圖所示,每一個工程都須要這樣設置
程序編譯完成以後,會生成以下幾個可執行程序。
嘗試運行其中的simple.exe可執行程序,結果以下,看起來是否是還不錯。
Qt5.4.2編譯 qtpropertybrowser-2.51(從4修改到5的除錯過程)
以上的內容,基本上就是本篇文章的內容全部內容啦!表格樹控件可使用起來了。但願能夠幫到你們。
很重要--轉載聲明