Я искал эквивалент .NET PropertyGrid и после долгих поисков я нашел этот что на самом деле скомпилировано. Но я не могу понять, как это работает для моего собственного объекта. В примере проекта есть несколько примеров, но это не очень помогло мне, как я использую это с моим пользовательским объектом.
Я попытался создать класс, который наследуется от QObject, и протестировал как свойства, так и поля, но ни один из них не работал То, что я получаю, является моим именем класса пустым, без каких-либо значений в списке.
Вот мой код:
class Foo : public QObject
{
Q_OBJECT
public:
explicit Foo(QObject *parent = 0);
~Foo();
int val;
};
Я также попытался определить класс Foo следующим образом (эта версия падает):
class Foo : public QObject
{
Q_OBJECT
public:
explicit Foo(QObject *parent = 0);
~Foo();
Q_PROPERTY(int a READ getA WRITE setA)
int a;
int getA() const;
void setA(int a);
};
И код, который создает сетку свойств:
Имущество
Model *model = new PropertyModel();
Foo *f = new Foo();
PropertyItemFromQObject *conv=new PropertyItemFromQObject(&PropertyItemDefaultFactory::instance());
PropertyItem *it=conv->importFrom(f,true,0);
model->add( new PropertyItemColor("une couleur",QColor(0,255,0)));
model->add( new PropertyItemColor("test color",QColor(255,0,0)));
model->add(it);
tree.setModel(model);
tree.setItemDelegate(new PropertyDelegate());
tree.show();
delete f;
Лучше искать Qt Property Browser. Это решение Qt и лицензия BSD. Вы можете найти несколько примеров в подпапке, а также искать в сети. Этот браузер свойств также используется, например, дизайнером Qt (он просто добавляет цвет поверх него).
Других решений пока нет …