gpt4 book ai didi

c++ - 有什么方法可以避免手动包装基类的方法以将它们标记为 Q_INVOKABLE?

转载 作者:行者123 更新时间:2023-11-28 06:01:36 25 4
gpt4 key购买 nike

我有一个派生自的基类。该基类 (BaseClass) 是一个纯 c++ 类(不是从 QObject 派生的)并实现了方法,我想将这些方法原封不动地提供给我的 QML 接口(interface)。

假设基类实现了方法bool foobar()。在我的派生类 (DerivedClass) 中,我现在将它们包装成这样:

派生类.h:

class DerivedClass : public QObject, public Singleton<Phone>, public BaseClass {
Q_OBJECT
public:
Q_INVOKABLE bool qt_foobar();

派生类.cpp:

bool DerivedClass::qt_foobar() {
return DerivedClass::instance().foobar();

这工作得很好,但是我想知道是否有更优雅的方法来传递或声明相应的方法为 Q_INVOKABLE 而无需包装和重命名。

最佳答案

您至少可以通过显式调用 BaseCass 的实现 ( as explained here ) 并直接在 header 中这样做来避免使用不同的名称:

class DerivedClass : public QObject, public Singleton<Phone>, public BaseClass
{
Q_OBJECT

public:
Q_INVOKABLE bool foobar() { return BaseClass::foobar() };

除了 header 中签名前的 Q_INVOKABLE 之外,我从未遇到过将可调用方法注册到 MOC 的方法。

关于c++ - 有什么方法可以避免手动包装基类的方法以将它们标记为 Q_INVOKABLE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com