如何使用此Qproperty网格库?

时间:2015-11-16 04:41:30

标签: c++ qt propertygrid

我正在寻找相当于.NET的PropertyGrid,在经过大量搜索之后,我找到了实际编译的this one。但我无法弄清楚这对我自己的对象是如何起作用的。示例项目中有一些示例,但这并没有真正帮助我如何在自定义对象中使用它。

我尝试创建了一个继承自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;

1 个答案:

答案 0 :(得分:1)

更好地寻找Qt Property Browser。这是Qt解决方案和BSD许可。您可以在子文件夹中找到多个示例,也可以在网上搜索。例如,Qt设计器也使用此属性浏览器(它只是在其上添加着色)。