【问题标题】:Give subclass of QQuickItem pointer to another C++ object将 QQuickItem 指针的子类提供给另一个 C++ 对象
【发布时间】:2014-01-03 14:19:01
【问题描述】:

我非常想继承一个 Qt QQuickItem 类以用于 QML,因此在幕后为其提供了大量 C++ 逻辑。但是,由于 QML 将实例化并拥有它,而不是 C++ 端,所以我不知道如何(如果可能的话)在这个新对象和系统中的其他 C++ 对象之间传递指针或连接。这可能吗?

【问题讨论】:

标签: c++ qt qml qtquick2


【解决方案1】:

您可以在 main.cpp 中注册一个指向任意 QObject 的全局 QML 对象。

Brain *brain = new Brain();

QQmlApplicationEngine engine;
QQmlContext *context = engine.rootContext();
context->setContextProperty("brain", brain);

现在您可以在 QML 中全局使用 brain。您可以将其传递给自定义组件,例如

VisibleComponent  {
    id: vico1
    width: 300
    height: 300

    Component.onCompleted: {
        vico1.setLogic(brain)
    }
}

这需要VisibleComponent 中的Q_INVOKABLE void setLogic(Brain* brain);。

我有这个代码的运行示例项目,如果你需要,请告诉我。

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 2017-01-25
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多