qtpropertybrowser是一個洛基亞時代的一個產物,其實它就是QtDesigner側欄那種樣子而已。網上大部分的都只適用於Qt4,今天頭腦發熱想用Qt5編譯一下,發覺一大堆錯誤,因為Qt4有些函數在Qt5里面是沒有的,所以不斷地找替代函數。當我辛辛苦苦編譯出來后,在網上一搜,大把人發布了修改過后的源代碼,可以支持Qt5編譯,暈死了,早知道就不用那么辛苦了。不過也記錄一下怎么去編譯好了,下面只講在編譯時候出錯的解決方法:
拿到源碼不能把qtpropertybrowser.pro拉到Creator里面,要把buildlib文件夾的buildlib.pro拉到Creator里面。
錯誤1:
解決方法:地球人都知道Qt5跟Qt4很明顯的不同就是這個,所以把#include <QtGui/QWidget>改成#include <QtWidgets/QWidget>
錯誤2:
解決方法:如果你看看Qt4的源碼就知道Q_TYPENAME被定義成typename ,所以直接把Q_TYPENAME替換成typename
錯誤3:
解決方法:這個qVariantValue()已經被Qt5棄用了,可以用qvariant_cast()替換掉它,說到這里大家要好好利用Creator里面的查找替換功能,不然改死你~~~
錯誤4:
解決方法:很明顯qFindChildren()被廢除了,可以用findChildren()替代,但是看清楚這個函數怎么用了,我把
- QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager);
改成:
- QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();
錯誤5:
解決方法:把最后一個參數去掉,不要忘了刪那個逗號!
錯誤6:
解決方法:把setMovable()改成setSectionsMovable();把setResizeMode()改成setSectionResizeMode()
錯誤7:
解決方法,在buildlib.pro文件里面添加下面的代碼:
- QT += core gui
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
下面是圖片展:
https://blog.csdn.net/trustguan/article/details/47004759