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” ...
随机推荐
- 在JSP页面下使用AJAX实现用户名存在的检测
<script type="text/javascript"> function init(){ document.getElementById ...
- JavaScript学习记录总结(六)——js函数闭包特性
<script type="text/javascript"> function arrdemo(){ var arr=["hello&q ...
- poj2375 强连通
题意:有一个 l * w 大小的滑雪场,每个格子都有一个高度,每个格子可以直接通到上下左右四个格子中高度小于等于自己的格子,现在要建立通道,能够连通任意两个格子,问最少建多少通道能够使所有格子能够互相 ...
- Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒
http://www.51itong.net/android-badgenumber-9789.html Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒 ...
- ExtJS Panel主要配置列表
Ext.panel.Panel 属性 值 描述 animCollapse Boolean 设置面板折叠展开是否显示动画,Ext.Fx可用默认true,否则false applyTo Mixed 面板定 ...
- Hibernate之:各种主键生成策略与配置详解
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...
- (转) A Survival Guide to a PhD
A Survival Guide to a PhD Sep 7, 2016 This guide is patterned after my “Doing well in your courses”, ...
- 论文笔记之:Playing Atari with Deep Reinforcement Learning
Playing Atari with Deep Reinforcement Learning <Computer Science>, 2013 Abstract: 本文提出了一种深度学习方 ...
- Web前端开发笔试&面试_03
WL: 1.如何显示.隐藏一个dom对象? 2.如何将一个网页中的内容水平置中?写出重要的html标签和css. (css:#content{align:center;float:left;}html ...
- Oracle数据库——体系结构
一.涉及内容 1.了解数据库的物理存储结构和逻辑存储结构 二.具体操作 1.分别使用SQL 命令和OEM 图形化工具查看本地数据库的物理文件,并使用OEM 工具在现有的users 表空间中添加user ...