【问题标题】:How to destroy context pointers in QML?如何销毁 QML 中的上下文指针?
【发布时间】:2016-07-26 09:11:47
【问题描述】:

我在 main() 中动态实例化了一个对象并将其设置在如下上下文中:

 Controller *controller = new Controller();
 engine.rootContext()->setContextProperty("controller", controller);

在这一点之后,我只能在 QML 中访问 c​​++ 中的指针。在应用程序结束时,我想释放指针(在Component.onDestruction 中更具体)。我不知道如何在 QML 中做到这一点。

  1. 我试过controller.destroy(),但它返回:Error: Invalid attempt to destroy() an indestructible object

  2. 也试过controller.deleteLater(),但它给了我:TypeError: Property 'deleteLater' of object Controller(0x4914028) is not a function

  3. delete controller 什么都不做。

我已经搜索了文档,但找不到我要查找的内容。有人有什么想法吗?谢谢!

【问题讨论】:

标签: qt pointers qml qtquick2


【解决方案1】:

您可以尝试使用智能指针,以便在超出范围时将其销毁。

//main.cpp

QSharedPointer<Controller> controller =
    QSharedPointer<Controller>(new Controller(), &QObject::deleteLater);
engine.rootContext()->setContextProperty("controller", controller);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 2014-08-15
    • 1970-01-01
    • 2013-11-27
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    相关资源
    最近更新 更多