我有一个显示树架构的GUI,如下所示。
这些节点中的每一个都是从它们上面的节点派生的单独类。所有这些都继承了QObject
的实现。
现在,当用户在Properties
的右键菜单下选择Implicit
时,我需要添加一些属性。选择此选项将打开一个包含属性的窗口。
我在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.h
是FCASM
节点的标头。
问题是只显示第一个属性,如第二张图片所示。有没有理由发生这种情况?我应该在构造函数或新函数中添加一些内容吗?
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;}
答案 0 :(得分:0)
我发现了我做错了什么。我假设由于属性是只读的,我只需要一个READ
访问器函数。通过添加WRITE
访问者并添加所需的WRITE
函数,可以显示属性。我并不完全理解为什么需要这种条件(可能只有READ
才能使属性可用于内省),但它有效!你去吧。
快乐编码每个人!
答案 1 :(得分:0)
无需添加READ和函数,您可以使用MEMBER直接访问变量。