我有一个我派生的基类。该基类(BaseClass
)是一个纯c ++类(不是从QObject派生)并实现了方法,我想在不改变的情况下提供给我的QML接口。
假设基类实现了方法bool foobar()
。在我的派生类(DerivedClass
)中,我现在将它们包裹起来:
DerivedClass.h:
class DerivedClass : public QObject, public Singleton<Phone>, public BaseClass {
Q_OBJECT
public:
Q_INVOKABLE bool qt_foobar();
DerivedClass.cpp:
bool DerivedClass::qt_foobar() {
return DerivedClass::instance().foobar();
这非常合适,但是我想知道是否有一种更优雅的方式来传递或声明各自的方法Q_INVOKABLE
而没有包装和重命名。
答案 0 :(得分:1)
您可以通过明确调用BaseCass的实现(as explained here)来避免使用不同的名称,并直接在标题中执行此操作:
class DerivedClass : public QObject, public Singleton<Phone>, public BaseClass
{
Q_OBJECT
public:
Q_INVOKABLE bool foobar() { return BaseClass::foobar() };
我从来没有遇到过在标题中的签名前面向MOC注册可调用方法而不是Q_INVOKABLE
的方法。