0

我有一组类ClassA,ClassBClassC:

class ClassA : public QObject
{
    Q_PROPERTY(int propertyA READ propertyA WRITE setPropertyA NOTIFY propertyAChanged)
}

class ClassB : public QObject
{
    Q_PROPERTY(int propertyB READ propertyB WRITE setPropertyB NOTIFY propertyBChanged)
}

class ClassC : public ClassA, public ClassB //problem: both classes are derived from QObject
{   
    Q_PROPERTY(int propertyC READ propertyC WRITE setPropertyC NOTIFY propertyCChanged)
}

每个类都有必须在 Qml 中可访问的属性,这意味着每个类都必须实现QObject该类。实现这一点的最佳方法是什么?

问候

4

1 回答 1

0

通过在它们前面创建带有 Q_INVOKABLE 的方法而不是使用 Q_PROPERTY 来创建一个访问这些属性的系统,只需在 ClassC 内部创建 ClassA 和 ClassB 的实例,然后重新实现属性以访问这些实例

class ClassC : public QObject //problem: both classes are derived from 
{   
    Q_PROPERTY(int propertyA READ propertyA WRITE setPropertyA NOTIFY propertyCChanged)
    Q_PROPERTY(int propertyB READ propertyB WRITE setPropertyB NOTIFY propertyCChanged)
    Q_OBJECT
public:
   ClassB bObject;  
   Q_INVOKABLE int propertyB() { 

      return bObject.property("propertyB"); 
   }
}
于 2020-01-05T02:59:10.560 回答