Qt属性表控件的使用 QtTreePropertyBrowser
属性表是vs2003时引入的的新控件,用于流量和设置大量的信息,现在,很多软件上都能看到它的身影,如vs,Qt Creator等IDE的详细设置里都离不开属性表。
2.安装部署
想用动态链接库的,只需要自己新建一个config.pri文件,里面写上SOLUTIONS_LIBRARY = yes即可。建议大家使用动态库,避免一些moc文件生成的一些诡异问题~~
部署QtTreePropertyBrowser非常简单,只需要把解压的文件夹放在你的工程目录下,在pro文件里加入
3.属性表的使用简介
3.1添加内容
propertyRemoved(), propertyChanged()
和propertyDestroyed(),各种类型的Manager如下:
QtBoolPropertyManager
QtColorPropertyManager
QtDatePropertyManager
QtDateTimePropertyManager
QtDoublePropertyManager
QtEnumPropertyManager
QtFlagPropertyManager
QtFontPropertyManager
QtGroupPropertyManager
QtIntPropertyManager
QtPointPropertyManager
QtRectPropertyManager
QtSizePropertyManager
QtSizePolicyPropertyManager
QtStringPropertyManager
QtTimePropertyManager
QtVariantPropertyManager

- QtVariantPropertyManager*m_pVarManager;
- m_pVarManager =newQtVariantPropertyManager(ui->propertyTree);
- QtVariantProperty *item =m_pVarManager->addProperty(QVariant::Int, QStringLiteral("整形数据:"));
- item->setValue(101);
- ui->propertyTree->addProperty(item);
- item =m_pVarManager->addProperty(QVariant::Bool, QStringLiteral("布尔型数据:"));
- item->setValue(true);
- ui->propertyTree->addProperty(item);
- item =m_pVarManager->addProperty(QVariant::Double, QStringLiteral("浮点数据:"));
- item->setValue(3.1415926);
- ui->propertyTree->addProperty(item);
- item =m_pVarManager->addProperty(QVariant::String, QStringLiteral("字符串数据:"));
- ui->propertyTree->addProperty(item);
- item->setValue(QStringLiteral("尘中远"));
效果如下:
- m_pVarManager =newQtVariantPropertyManager(ui->propertyTree);
- QtProperty *groupItem =m_pVarManager->addProperty(QtVariantPropertyManager::groupTypeId(),QStringLiteral("组1"));
- QtVariantProperty *item =m_pVarManager->addProperty(QVariant::Int, QStringLiteral("整形数据:"));
- item->setValue(101);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::Bool, QStringLiteral("布尔型数据:"));
- item->setValue(true);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::Double, QStringLiteral("浮点数据:"));
- item->setValue(3.1415926);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::String, QStringLiteral("字符串数据:"));
- groupItem->addSubProperty(item);
- item->setValue(QStringLiteral("尘中远"));
- ui->propertyTree->addProperty(groupItem);
3.2 修改内容
H
- QtVariantPropertyManager*m_pVarManager;
- QtVariantEditorFactory*m_pVarFactory;
cpp
- m_pVarManager =newQtVariantPropertyManager(ui->propertyTree);
- m_pVarFactory =newQtVariantEditorFactory(ui->propertyTree);
- QtProperty *groupItem =m_pVarManager->addProperty(QtVariantPropertyManager::groupTypeId(),QStringLiteral("组1"));
- QtVariantProperty *item =m_pVarManager->addProperty(QVariant::Int, QStringLiteral("整形数据:"));
- item->setValue(101);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::Bool, QStringLiteral("布尔型数据:"));
- item->setValue(true);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::Double, QStringLiteral("浮点数据:"));
- item->setValue(3.1415926);
- groupItem->addSubProperty(item);
- item =m_pVarManager->addProperty(QVariant::String, QStringLiteral("字符串数据:"));
- groupItem->addSubProperty(item);
- item->setValue(QStringLiteral("尘中远"));
- ui->propertyTree->addProperty(groupItem);
- ui->propertyTree->setFactoryForManager(m_pVarManager,m_pVarFactory);
3.3 响应信号和槽
void QtAbstractPropertyManager::propertyChanged ( QtProperty * property );
如果是用QtVariantPropertyManager,那么它的valueChanged 信号将会是你经常使用的信号,它会发生发生更改的属性指针以及更改后的值。
void valueChanged ( QtProperty * property, const QVariant & value )
但为了知道是哪个属性,需要附加一个map来进行记录,
h文件
- QMap<QtProperty*,QString>m_property_dic;
- QtVariantPropertyManager*m_pVarManager;
- QtVariantEditorFactory*m_pVarFactory;
cpp
- XXXClass::XXXClass(QWidget *parent)
- :QMainWindow(parent),ui(newUi::XXXClass) {
- m_pVarManager =newQtVariantPropertyManager(ui->propertyTree);
- m_pVarFactory =newQtVariantEditorFactory(ui->propertyTree);
- connect(m_pVarManager,&QtVariantPropertyManager::valueChanged,this,&XXXClass::variantPropertyValueChanged);
- ui->propertyTree->setFactoryForManager(m_pVarManager,m_pVarFactory);
- QtVariantProperty *item =m_pVarManager->addProperty(QVariant::Int, QStringLiteral("参数1"));
- item->setValue(1);
- ui->propertyTree->addProperty(item);
- m_property_dic[item] =QStringLiteral("参数1");
- item =m_pVarManager->addProperty(QVariant::Double, QStringLiteral("参数2"));
- item->setValue(2);
- ui->propertyTree->addProperty(item);
- m_property_dic[item] =QStringLiteral("参数2");
- item =m_pVarManager->addProperty(QVariant::String, QStringLiteral("参数3"));
- item->setValue(QStringLiteral("czy"));
- ui->propertyTree->addProperty(item);
- m_property_dic[item] =QStringLiteral("参数3");
- item =m_pVarManager->addProperty(QVariant::Bool, QStringLiteral("参数4"));
- item->setValue(true);
- ui->propertyTree->addProperty(item);
- m_property_dic[item] =QStringLiteral("参数4");
- }
- voidXXXClass::variantPropertyValueChanged(QtProperty *property, constQVariant &value)
- {
- QString s =m_property_dic[property];
- qDebug()<<s<<":"<<value;
- }
输出:
"" : QVariant(int, 1)
"" : QVariant(double, 2)
"" : QVariant(QString, "czy")
"" : QVariant(bool, true)
"参数1" : QVariant(int, 123)
"参数2" : QVariant(double, 13)
"参数3" : QVariant(QString, "")
"参数3" : QVariant(QString, "中国")
"参数4" : QVariant(bool, false)
"参数4" : QVariant(bool, true)
参考提供的例子,有时候,为了方便双向控制,还会建立一个映射
QMap<QtProperty *, QString> propertyToId;
QMap<QString, QtProperty *> idToProperty;
Qt属性表控件的使用 QtTreePropertyBrowser的更多相关文章
- ExtJS4.2学习(九)属性表格控件PropertyGrid(转)
鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-15/178.html ------------- ...
- CAD控件:QT开发使用控件入门
1. 环境搭建: 3 1.1. 安装Qt 3 1.2. 安装Microsoft Windows SDK的调试包 6 2. QT中使用MxDraw控件 7 1.3. 引入控件 7 3. 打开DWG文件 ...
- Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等
目录 一.概述 二.效果展示 三.定制表头 1.重写数据源 2.重写QHeaderView 四.设置属性 五.相关文章 原文链接:Qt实现表格控件-支持多级列表头.多级行表头.单元格合并.字体设置等 ...
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...
- WinForm-利用Anchor和Dock属性缩放控件
转自:http://www.cnblogs.com/tianzhiliang/articles/2144692.html 有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控 ...
- duilib relativepos属性导致控件错误的bug修复
转载请说明出处,谢谢~~ 我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/381 ...
- 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试
原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...
- ABAP表控件查询
1.准备工作 首先SE11自建一个数据库表(数据元素,域信息请提前建好) 2.编写代码 2.1 新建一个子屏幕 子屏幕中需新定义一个文本输入框,命名为:key_word,新建一个表控件,命名为tab, ...
- MFC ActiveX新增属性页 控件不响应
在Activex中可以添加自定义的属性页,在新的属性页上添加一个button控件,设置好响应函数后,测试时发现点击button没有响应. 对比之前的主属性页发现,新增属性页的属性“Disabled” ...
随机推荐
- leetcode 150. Evaluate Reverse Polish Notation ------ java
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...
- spark 分析sql内容再插入到sql表中
package cn.spark.study.core.mycode_dataFrame; import java.sql.DriverManager;import java.util.ArrayLi ...
- URAL 1080 Map Coloring(染色)
Map Coloring Time limit: 1.0 secondMemory limit: 64 MB We consider a geographical map with N countri ...
- JAVA导入包
在package **;下面写入 import java.**.**; 1.使用Scanner工具类来获取用户输入的成绩信息 Scanner类位于java.util包中,使用时需要导入此包 1.1. ...
- HDU-1255 覆盖的面积 (扫描线)
题目大意:给若干个矩形,统计重叠次数不为0的面积. 题目分析:维护扫描线的长度时,只需要只统计覆盖次数大于1的区间即可.这是个区间更新,不过不能使用懒标记,但是数据规模不大,不用懒惰标记仍可以AC. ...
- js动态生成数据列表
我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js ...
- A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning
A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning by Jason Brownlee on S ...
- Valgrind简单用法
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker.让我们一起来看一下他的作品.Valgrind是运行在Li ...
- javascript面向对象规则汇总以及json
javascript中一切皆对象,而且定义非常灵活, 于是出现了一些相对其他编程语言环境下匪夷所思的代码: ---------------------------------------------- ...
- Linux-IP地址后边加个/8(16,24,32)是什么意思?
是掩码的位数 A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位); B类的为255.255.0.0(/16) ...