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


   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()替代,但是看清楚這個函數怎么用了,我把

 

[cpp]  view plain  copy
 
  1. QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager);  


改成:

[cpp]  view plain  copy
 
  1. QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();  

 

 

 

 

錯誤5:

 

 

解決方法:把最后一個參數去掉,不要忘了刪那個逗號!


 

 

錯誤6:

 

 

解決方法:把setMovable()改成setSectionsMovable();把setResizeMode()改成setSectionResizeMode()

 

 

 

 

錯誤7:

 

解決方法,在buildlib.pro文件里面添加下面的代碼:

[cpp]  view plain  copy
 
  1. QT       += core gui  
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  


 

 

下面是圖片展:

 

 

 

 

 

https://blog.csdn.net/trustguan/article/details/47004759


免責聲明!

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



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