超级实用的属性浏览器控件–QtTreePropertyBrows…

  超级实用的属性浏览器控件–QtTreePropertyBrowser
 
  目录
 
  一、源码下载
 
  二、代码编译
 
  1、intersect函数替换为intersected
 
  2、移除UnicodeUTF8
 
  3、QtGui模块拆分
 
  4、Q_TYPENAME错误
 
  5、qVariantValue错误
 
  6、qFindChildren错误
 
  7、setMovable移除
 
  8、setMovable移除
 
  9、添加QtWidgets模块
 
  三、运行结果
 
  四、参考文章
 
  一、源码下载
 
  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可执行程序,结果如下,看起来是不是还不错。
 
  

如需转载,请注明文章出处和来源网址: