一个Q_PROPERTY可以泛化为多个基类吗?
Can a Q_PROPERTY be generalized for multiple base classes?
我正在尝试为将保存在容器中的一些数据编写包装器。这些数据将与QML接口,此后将包含Q_PROPERTIES。但是,我希望此数据派生自特定的基类,因此我可以调用重写的方法而无需强制转换。下面是一个示例。
class Base : public QObject
{
Q_OBJECT
Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged)
public:
/*implementation is irrelevant, just boilerplate code*/
}
class BaseBool : public Base {
Q_PROPERTY(bool value READ value WRITE setValue NOTIFY valueChanged)
public:
/*I want to override the functions here so I can just call them
like I would for a base class, but I want them to be different types.
I want to extend this for other types too.*/
}
希望这是有道理的。显然,模板类并具有T类型的Q_PROPERTY将是理想的,但是对于当前的Qt来说,这是不可能的。对此有什么像样的解决方案吗?可能有更好的设计模式来解决这个问题,但我现在不知所措。
Qt的所有元数据都可以在运行时生成,也可以使用C++编译器而不是moc。这些属性可以在动态或编译期间合成,对于模板化类来说不会有问题。你要找的是Verdigris。只要你有一个足够现代的编译器,那么Verdigris就是你所需要的:
[你]需要一个可以执行C++14宽松的constexpr的编译器,例如GCC 5.1或Clang 3.5或MSVC 2017
相关文章:
- std::具有相同基类的类的变体
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 基类中的函数名称解析
- C++初始化基类
- 如何通过派生类函数更改基类中的向量
- 如何定义一个纯抽象基类
- 如何使用基类指针引用派生类成员
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 如果基类包含双指针成员,则派生类的构造函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 为什么此派生对象无法访问基类的后递减方法?
- 公开最直接的基类模板名称
- 当基类是依赖类型时,这是一个缺陷吗
- 如何使基类的运算符对基类的可变参数数可见(请参阅下面的代码)?
- 模板基类中的静态变量
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 一个Q_PROPERTY可以泛化为多个基类吗?