提问人:Mark 提问时间:2/9/2022 更新时间:2/9/2022 访问量:23
使用派生类添加属性并保持与现有类的兼容性
Use derived class to add properties and maintain compatibility with existing classes
问:
我正在编写一个在 Ubuntu 20.04 中运行的 Qt 6.2.0 应用程序。
我的目标是将属性添加到现有类中。
所以我写道:QtOpcUaNode
class MyOpcUaNode : public QOpcUaNode
{
Q_OBJECT
public:
explicit MyOpcUaNode(QOpcUaNode *parent = nullptr) : QOpcUaNode(parent) { }
bool updated;
};
但这里的第一个错误:
error: no matching function for call to ‘QOpcUaNode::QOpcUaNode(QOpcUaNode*&)’
In file included from ../MyProject/myproject.cpp:1:
../MyProject/myproject.h: In constructor ‘MyOpcUaNode::MyOpcUaNode(QOpcUaNode*)’:
../MyProject/myproject.h:16:73: error: no matching function for call to ‘QOpcUaNode::QOpcUaNode(QOpcUaNode*&)’
16 | explicit MyOpcUaNode(QOpcUaNode *parent = nullptr) : QOpcUaNode(parent) { }
| ^
我想以这种方式使用我的类:
QList<MyOpcUaNode *> _listOpcNodes;
_listOpcNodes.append(MyOpcUaNode(_opcUaClient->node("ns=4;s=MEM_RUN_LINE")));
...
_listOpcNodes[x]->updated = true;
我的方法正确吗?
我尝试了没有复制构造函数,但我不确定如何将 .尝试:QOpcUaNode *
MyOpcUaNode *
MyOpcUaNode *node = qobject_cast<MyOpcUaNode *>(_opcUaClient->node("ns=4;s=MEM_RUN_LINE"));
lead 成为指针(即使 是正确的)。node
null
_opcUaClient->node
答:
1赞
HiFile.app - best file manager
2/9/2022
#1
如果你想给继承自 的类添加属性,你可以用 https://doc.qt.io/qt-5/qobject.html#setProperty 来做到这一点。好吧,它不是类型安全的,但它非常简单。有时实用主义胜过纯粹主义。QObject
setProperty()
评论
OpcUaNode::attributeRead