0

我有一个显示树结构的 GUI,如此处所示。

在此处输入图像描述

这些节点中的每一个都是从它们上面的节点派生的独立类。它们都继承QObject了它们的实现。现在我需要添加一些属性,以便用户PropertiesImplicit. 选择它会打开一个带有属性的窗口。我在头文件中添加了这些属性,Implicit如下所示:

#ifndef FCIMPLICIT_H
#define FCIMPLICIT_H
#include <QObject>
#include "Interface.h"
#include "ResourceItem.h"
#include "MonWindow.h"
#include "FCTab.h"
#include "ResourceItem.h"
#include "FCAbstract.h"
#include "FCInterface.h"
#include "FCConnections.h"
class CFCImplicit: public CResourceItem
{

    Q_OBJECT
    Q_PROPERTY(int FCPortID READ getPortID )
    Q_PROPERTY(QString Type READ getType )
    Q_PROPERTY(QString Status READ getStat )    
    Q_PROPERTY(int WWNodeNumber READ getNodeNo )
    Q_PROPERTY(int WWPortNumber READ getPortNo )
    Q_PROPERTY(bool AutoActive READ getAuto )
public:
    CFCImplicit(QObject*);
    ~CFCImplicit();

    QString                 getType();
    QString                 getStat();
    int                     getPortID();
    int                     getPortNo();
    int                     getNodeNo();
    bool                    getAuto();


};

FCinterface.hFCASM节点的头部。

问题是只显示第一个属性,如第二张图片所示。发生这种情况有原因吗?我应该向构造函数或新函数添加一些东西吗?

该类的构造函数Implicit

CFCImplicit::CFCImplicit(QObject* parent) : CResourceItem(parent)
{

    fnSetProperty("objectName", QString("Implicit"));   
    ((CResourceItem*)parent)->fnAddResources(this);

}

编辑:

这是所有READ功能的代码

QString CFCImplicit::getType()
{
QString a;
a="Implicit";
return a;
}

QString CFCImplicit::getStat()
{QString a;
a="Idle";
return a;}

int CFCImplicit::getPortID()
{int a;
a=1;
return a;}

int CFCImplicit::getPortNo()
{int a;
a=2;
return a;}

int CFCImplicit::getNodeNo()
{int a;
a=2;
return a;}

bool CFCImplicit::getAuto()
{bool a;
a=true;
return a;}
4

2 回答 2

0

我发现我做错了什么。我假设由于属性是只读的,我只需要一个READ访问器函数。通过添加WRITE访问器并添加所需的WRITE功能,显示了属性。我不完全理解为什么需要这种条件(也许READ只是使属性可用于自省),但它起作用了!所以你去。

祝大家编码愉快!

于 2017-05-18T09:21:26.363 回答
0

无需添加 READ 和函数,您可以使用 MEMBER 直接访问变量。

于 2017-05-18T09:33:47.107 回答