【发布时间】:2017-05-18 05:12:44
【问题描述】:
我有一个显示树结构的 GUI,如下所示。
这些节点中的每一个都是从它们上面的节点派生的独立类。它们都继承了QObject 的实现。
现在我需要在Implicit 的右键菜单下添加一些当用户选择Properties 时要显示的属性。选择它会打开一个带有属性的窗口。
我在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;}
【问题讨论】:
-
你能告诉我们你提取所选对象的属性以将它们添加到属性表中的代码吗?
-
@BenjaminT 我已经添加了代码,但他们什么也没做。我定义它们只是为了演示属性的添加。这些函数只返回预定义的值。
-
我不是指 getter 的代码。我的意思是您检索对象属性列表的代码。它应该包含对
QMetaObject::propertyCount()和QMetaObject::property(int)的调用。 -
我没有为此添加任何代码。这些线路有什么用途?我将(错误地,也许)假设他们只返回带有属性数量的
int,如果是这样,它们如何影响正在显示的属性? -
是的,您确实为此添加了代码。通过直接编写或使用库来编写。要了解为什么属性不显示在属性表中,您需要了解属性表的工作原理。如果您不提供有关属性表的任何详细信息,则没有人可以帮助您。 (附带说明,不要假设函数的作用,而是阅读文档!)