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();