qt - QML 对象 var 属性为 null QVariant(QJSValue, ) 来自 cpp

标签 qt qml qt5

我正在使用 Qt5.5(来自 archlinux x86_64 存储库的 5.5.1-3)并想从 cpp 读取 qml 对象属性,但还没有运气:

qml 部分:

import QtQuick 2.2

Item {
    signal doSomething()
    signal myDataChanged()
    property string myString: ""
    property var myObject: ({})
    onDoSomething(): {
        myString = "myStringValue"
        myObject = {"foo":"bar"}    
        myDataChanged()
    }
}

cpp部分:

void MyClass::processChangedData() {
    qDebug()<<sender()->property("myString");
    qDebug()<<sender()->property("myObject");
}

myDataChanged() 信号连接到 MyClass::processChangedData()

输出:

QVariant(QString, "myString")
QVariant(QJSValue, )

你能帮我吗?我想从cpp部分获取qml对象属性的数据。

最佳答案

听起来你应该能够做到:

auto js = sender()->property("myObject").value<QJSValue>();
qDebug() << js.property("foo").toString();

并使用QJSValue中的其他方法。

关于qt - QML 对象 var 属性为 null QVariant(QJSValue, ) 来自 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33653240/

相关文章:

c++ - 从 C++ 访问 QML WebView

qt - QML 在 ListView 中显示的相机照片被破坏

c++ - 如何在我的应用程序级别使对话窗口始终位于最前面

c++ - Qt | QProcess |将行写入控制台应用程序

qt - 交换两个 QML 属性的值

c++ - Qt:从固定数量的字节到整数

qt - 使用 FileDialog 在 QtQuick 中浏览文件夹

c++ - 未知对象的序列化

c++ - visual studio调试Qt,缺少msvcp140d_app.dll

linux - 带有 CMake 的 Qt 应用程序中的静态链接库