javascript - 检查/访问 QML 中动态创建的对象

标签 javascript c++ qt qt4 qml

有什么方法可以在 QML/javascript 中检查是否存在并访问动态创建的对象(不使用 C++)?

我正在尝试创建一个具有类似于 map 的界面的应用程序 - 给定一个键和一个对象,我的应用程序必须定位是否存在具有该键的对象并用新对象覆盖。如果不是,应用程序必须创建一个新对象并与 key 相关联。

文档说动态管理的对象没有 ID,我发现访问它们的唯一方法是使用 objectName,这似乎需要 C++ 应用程序。

提前致谢。

最佳答案

您可以使用 JavaScript 对象作为 map 。您不能在 QML 中直接操作它,但您可以将所有处理此对象的代码移动到 JavaScript 文件中并将其作为模块包含在内。 这是一个简单的例子:

map .js:

var _map = new Object()

function value(key) {
    return _map[key]
}

function setValue(key, value) {
    _map[key] = value
}

function remove(key) {
    delete _map[key]
}

function keys() {
    return Object.keys(_map)
}

function process() {
    for (var key in _map) {
        /* do something */
    }
}

QML 示例:

import QtQuick 1.1
import "Map.js" as Map

Item {
    Component.onCompleted: {
        Map.setValue("test", "hello")
        console.log("test = ", Map.value("test"))
        Map.remove("test", "hello")
        console.log("test = ", Map.value("test"))
    }
}

输出将是:

test =  hello
test =  undefined

关于javascript - 检查/访问 QML 中动态创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890196/

相关文章:

javascript - 使用 JavaScript 进行自动化单元测试

c++ - C++ 中不区分大小写的标准字符串比较

c++ - Qt 在 .dll 中使用 .dll

c++ - Q_OBJECT 产生许多错误

c++ - multimap 运算符函数错误

javascript - 弹出图像不会停留在同一个地方

javascript - 当 url 不允许位于 iframe 内时,我需要重定向到 url?

javascript - 源代码未完全执行。 (JS)

c++ - QObject::connect 函数中的 QObject* 上下文

c++ - 从指向基类对象的指针 vector 调用派生类的独特函数