Qml和C++交互:通过指针或副本返回

Qml and C++ interaction: return by pointer or by copy

本文关键字:指针 副本 返回 C++ 交互 Qml      更新时间:2023-10-16

所以我有一个Q_PROPERTY暴露在下面的中,类似于qml

Q_PROPERTY(QVariantMap info READ getInfo NOTIFY infoChanged)
QVariantMap ProfileInfo::getInfo()
{
    return info;
}

现在,我的问题是,下面的方法会更有效、成本更低吗?

Q_PROPERTY(QVariantMap* info READ getInfo NOTIFY infoChanged)
QVariantMap* ProfileInfo::getInfo()
{
    return &info;
}

只是稍微更高效(QVariantMap使用隐式共享,因此副本并不昂贵(,但最大的问题是QML不知道如何处理QVariantMap *,只知道如何处理QVariantMap(请参阅此处(。