Sil*_*r22 1 polymorphism qt overriding qproperty qt5.4
考虑这些类:
Class A : public QObject {
...
Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged)
virtual int value() { return m_value; }
void setValue(int v) { m_value = v; Q_EMIT valueChanged();}
...
};
Class B : public A {
...
int value() { return m_value * 2; }
...
};
Run Code Online (Sandbox Code Playgroud)
访问属性值时,直接调用A类方法而不是B类.
到目前为止,为了解决这个明显的限制,我复制了属性代码并连接了每个类的信号.
这是最好的解决方案吗?
有没有人看到潜在的问题(由于属性具有相同的名称)?
从Qt文档:
READ,WRITE和RESET函数可以继承.它们也可以是虚拟的.当它们在使用多继承的类中继承时,它们必须来自第一个继承的类.
只需将访问器设置为虚拟,它们将从vtable调用,因此您将为每个不同的子类型获得正确的功能.
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |