超级实用的表格树控件--QtTreePropertyBrowser
一、源码下载
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的除错过程)
以上的内容,基本上就是本篇文章的内容所有内容啦!表格树控件可以使用起来了。希望可以帮到大家。
![]()  | 
![]()  | 
很重要--转载声明
本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
超级实用的表格树控件--QtTreePropertyBrowser的更多相关文章
- 表格树控件QtTreePropertyBrowser编译成动态库(设计师插件)
		
目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidgetIn ...
 - Qt实现表格树控件-自绘树节点虚线
		
目录 一.开心一刻 二.自绘树节点? 三.效果展示 四.实现思路 1.可扩展接口 2.函数重写 3.同步左侧表头 五.相关文章 原文链接:Qt实现表格树控件-自绘树节点虚线 一.开心一刻 一程序员第一 ...
 - Qt实现表格树控件-支持多级表头
		
目录 一.概述 二.效果展示 三.实现方式 四.多级表头 1.数据源 2.表格 3.QStyledItemDelegate绘制代理 五.测试代码 六.相关文章 原文链接:Qt实现表格树控件-支持多级表 ...
 - JS组件系列——Bootstrap 树控件使用经验分享
		
前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...
 - js插件---Bootstrap 树控件
		
js插件---Bootstrap 树控件 一.总结 一句话总结:可以直接用gojs,或者搜索js,jquery的树控件,或者bootstrap树控件,一大堆 gojs 二.JS组件系列——Bootst ...
 - Bootstrap树控件(Tree控件组件)使用经验分享
		
前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...
 - 【新特性速递】树控件结构由单层 TR 改为 TR-TD-TABLE 层级嵌套
		
FineUIPro/Mvc/Core的下个版本(v6.1.0),我们对树控件进行了优化,由原来的单层 TR 改为 TR-TD-TABLE 层级嵌套,从而做到表里如一. 上个版本(v6.0.0),我们对 ...
 - PyQt5复杂控件(树控件、选项卡控件(滚动条控件、多文档控件、停靠控件)
		
1.树控件的基本使用方法QTreeWidget'''QTreeWidget树控件的使用方法添加图标,添加表格,添加复选框等'''from PyQt5.QtWidgets import *from Py ...
 - MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
		
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
 
随机推荐
- Linux 获得了其首款基于 RISC-V 的多核开源处理器
			
去年,硅谷创业公司 SiFive 发布了首款开源 SoC(片上系统 System on a Chip),命名为 Freeform Everywhere 310.现在,该公司从嵌入式系统领先一步,发布了 ...
 - matlab figure 调整大小、字体、线宽
			
用 matlab 画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚. 解决办法: % figure resize set(gcf,'Position',[100 100 260 220]); se ...
 - 构建自己的PHP框架(Twig模板引擎)
			
完整项目地址:https://github.com/Evai/Aier Twig 模板引擎 模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以 ...
 - js到字符串数组,实现阵列成一个字符串
			
数组字符串(阵列元件与字符串连接) var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 字符串转数组(根据一个字符串被分成 ...
 - JS超链接动态显示图片
			
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
 - JS window下面的对象
			
) •Js脚本一执行就会访问服务器.超链接诶还需要点击. getElementById(), (非常常用),根据元素的Id获得对象,网页中id不能重复.也可以直接通过元素的id来引用元素,但是有有效范 ...
 - 数据绑定(九)Binding的数据校验
			
原文:数据绑定(九)Binding的数据校验 Binding用ValidationRules属性来校验数据的有效性,ValidationRules属性类型是Collection<Validati ...
 - Android项目实战(四十四):Zxing二维码切换横屏扫描
			
原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...
 - Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)
			
下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...
 - 利用Python sklearn的SVM对AT&T人脸数据进行人脸识别
			
要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线. 使用Python完成,主要参考文献[4],其中遇到不懂的功能函数一个一个的查官方文档 ...
 
			
		
