标签: qqmlengine

更改 QML 对象的 QQmlContext?

显然,即使对象与现有的父对象分离并附加到新的父对象,当旧的父上下文被销毁时,对象也会被销毁。

想到的第一个解决方案是在持久上下文中创建对象。但是,动态范围属性将不适用于它。这对我的用例至关重要。如果对象不在其父对象的上下文中,并且父对象发生变化,我将无法运行。此外,即使目标对象具有函数,也无法再调用函数,因为 QML attempted to evaluate a function in an invalid context.

尝试诉诸QQmlEngine::setContextForObject()并且QQmlEngine::contextForObject()只是发现一旦设置,就无法重置上下文。

那么,有什么新鲜的想法吗?

qt qml qqmlengine qqmlcontext

5
推荐指数
0
解决办法
779
查看次数

如何找到单例对象的QQmlEngine实例?

我有一个SingletonBaseClass在 C++ 中定义并随后在 QML 中扩展的类。在 qmldir 文件中,它被标记为 Singleton:

// qmldir file
singleton SingletonClass 1.0 SingletonClass.qml

// SingletonClass.qml
import QtQml 2.0
pragma Singleton
SingletonBaseClass {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这是基类:

class SingletonBaseClass : public QObject 
{
    Q_OBJECT
    public:
    SingletonBaseClass(QObject* parent = nullptr) {}

    // Get the owner engine
    Q_INVOKABLE void someMethodCalledFromQml()
    {
        QQmlEngine* ownerEngine = ?
    }

    // Get the single instance of the given engine
    static SingletonBaseClass* instance(QQmlEngine* engine)
    {
        SingletonBaseClass* instance = ?
        return instance;
    } 

};
Run Code Online (Sandbox Code Playgroud)
  1. 如何检索 …

qt qml qqmlengine

3
推荐指数
1
解决办法
3164
查看次数

标签 统计

qml ×2

qqmlengine ×2

qt ×2

qqmlcontext ×1