1.首先定义一个属性,QtProperty *priority,
然后为你要创建的属性建立一个管理器的实例,例如,为了建立一个整型类型的属性,首先实例化一个QIntPropertyManager类, QtIntPropertyManager *intManager;然后我们使用管理器的addPropery()函数把这个属性加入到管理器中。然后用管理器的实例来为这个属性添加和设置值。
QtIntPropertyManager *intManager; //(2)建立一个属性的管理器
QtProperty *priority: //(1)定义一个属性
intManager = new QtIntPropertyManager;
priority = intManager->addProperty("Priority"); //(3)将属性加入到管理器中
priority->setToolTip("Task Priority");
intManager->setRange(priority, 1, 5); //(4)管理器来管理属性的动作
intManager->setValue(priority, 3);
QtEnumPropertyManager *enumManager;
QtProperty *reportType;
QStringList types;
...
types << "Bug" << "Suggestion" << "To Do";
enumManager->setEnumNames(reportType, types);
enumManager->setValue(reportType, 1); // "Suggestion"
2.属性也可以被归类为一组使用QtGroupProperyManager类。每个属性也可以没有或者有很多子属性,使用addPropetry()函数来增加子属性。被组属性管理器建立的属性没有任何值,它仅仅是用来在属性继承表中作为一个组元素。
QtGroupPropertyManager *groupManager;
QtProperty *task1;
groupManager = new QtGroupPropertyManager;
task1 = groupManager->addProperty("Task 1");
task1->addSubProperty(priority);
task1->addSubProperty(reportType);
4.一旦我们建立了一个属性,我们将把属性管理器和一个工厂(facoty)连接,这个工厂将是这个类型的首选的编辑器。
5.为了呈现属性表。我们必须建立一个属性浏览类的实例,然后用这个属性浏览类把属性管理器和工厂相联结,使用setFactoryManager()函数。
6.最后使用属性浏览类的实例的show()函数把属性表显现出来。
QtSpinBoxFactory *spinBoxFactory = new QtSpinBoxFactory;
QtEnumEditorFactory *enumFactory = new QtEnumEditorFactory;
QtTreePropertyBrowser *browser;
browser = new QtTreePropertyBrowser;
一旦我们设置好属性,我们将把每个管理器和一个工厂相连起来,工厂为每个管理器的每个类型提供了一个适合的编辑器,例如qtIntManager一般和QtSpinBoxFactory工厂相连接,
browser->setFactoryForManager(intManager, spinBoxFactory);
browser->setFactoryForManager(enumManager, enumFactory);
browser->addProperty(task1);
browser->show();