超级实用的表格树控件--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可执行程序,结果如下,看起来是不是还不错。
四、参考文章
Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)
以上内容,基本上就是本篇文章的所有内容啦!表格树控件可以使用起来了。希望可以帮到大家。
后续我会把这个控件封装起来,封装成一个类似于QTreeWidget的控件,让其他人使用起来更容易
很重要--转载声明
- Qt属性表控件的使用 QtTreePropertyBrowser
- QtTreePropertyBrowser控件的使用
- Qt属性表控件的使用 QtTreePropertyBrowser
- Qt属性表控件的使用 QtTreePropertyBrowser
- Qt属性表控件的使用 QtTreePropertyBrowser
- Subclassing QtTreePropertyBrowser causes linker error
- Qt-解锁QtPropertyBrowser控件
- QtPropertyBrowser控件在Qt5.5上的安装配置
- QtPropertyBrowser的新下载位置
- 实用bootstrap 表格控件
- 超级表格企业版,最实用的三个功能
- QtPropertyBrowser简介
- Qt:TreeWidget(树控件)的简单操作
- 引入qtpropertybrowser后出现的无法解析的外部符号的解决办法
- 【实用案例】如何导出超级表格中的指定数据?
- VB6-表格控件MSHFlexGrid 实用代码
- Qt 实用小技巧1--exe文件添加图标、避免子控件继承父控件的背景
- Qt下操作TabWidget和TreeWidget以及treeView的操作,实现控件的上移,下移,删除,新建操作;以及树形控件的操作;
- Qt5.4.2编译 qtpropertybrowser-2.51
- QtPropertyBrowser的安装与配置