Qt属性表控件的使用
1、解锁QtPropertyBrower
如果安装Qt时选择了安装src的话,那么只需要在pro中加入如下这句话就可以使用QtPropertyBrowser
include($$[QT_INSTALL_PREFIX]/../Src/qttools/src/shared/qtpropertybrowser/qtpropertybrowser.pri)
如果没有安装源码,也可以在github上下载,地址如下:
qt4版本:https://github.com/qtproject/qt-solutions/tree/master/qtpropertybrowser
qt5版本:https://github.com/qt/qttools/tree/dev/src/shared/qtpropertybrowser
或者把qtpropertybrowser文件夹拷贝到当前工程目录中,在pro中加入
include($$PWD/qtpropertybrowser/qtpropertybrowser.pri)
2、使用QtTreePropertyBrowser
在designer里,放置一个widget,并右键提升为类QtTreePropertyBrowser(注意大小写,曾在这里卡了一下),基类选择Widget(注意基类,第一次用QLabel提升,发现了没有settext的错误,所以基类要选择Widget),编译运行后出现
表示配置成功
或者
// 把其当做一个普通QWidget插入布局即可显示 auto property = new QtTreePropertyBrowser(this); main_layout->addWidget(property);
3、填充数据
包含以下三个头文件
#include <qttreepropertybrowser.h> #include <qtvariantproperty.h> #include <qtpropertymanager.h>
QtTreePropertyBrowser,该控件的主体,本身是基于一个QTreeWidget而来的
QtVariantPropertyManager,用于管理控件的属性,如果有些内容想让编辑,有些内容不想让用户编辑,可以设置两个manager,一个设置Factory另外一个不设置,那么设置了Factory的manager生成的属性就可以编辑,没设置的就不可用编辑了
4、更改列数
有时一个条目不光包括着名字和值,还有单位,比如长度属性,可能还包含单位信息如米,但是现在的PropertyBrowser只含有两列。该控件的本质是一个QTreeWidget,所以为了实现三列的功能,可以在源码中稍作修改,将QTreeWidget的列数改为3。
查看QtTreePropertyBrowser的源码如下,在init()函数中可以清晰得看出这个控件的本体是个QTreeWidget,并且它的表头标签也可以在这里修改,比如改成中文的表头
现在是正常出现了第三列的,但是第三列的数据空白,继续往下翻源码,会发现填充数据是在updateItem()函数中实现的,同样在这里稍作修改设置第三列的单位就可以了。
参考:
(175条消息) QT属性控件 QtPropertyBrowser 的使用_stevenkoh的博客-CSDN博客_qtpropertybrowser
(175条消息) Qt学习笔记(十)QtTreePropertyBrowser属性表用法及样式修改_皆成旧梦的博客-CSDN博客_qtpropertybrowser
(175条消息) Qt属性表控件的使用 QtTreePropertyBrowser_尘中远的博客-CSDN博客