我有一个用C ++编写的自定义QML对象,其中一个属性属于QVariantMap
类型,因此它应该与Javascript对象兼容。
但是,我实际上分配了一个JS对象有一些麻烦:
Uploader {
sample: selectSampleButton.fileUrl
parameters: {
x: '3'
y: "String"
}
}
这甚至可能是这样吗?我发现有一种可能性就是用Javascript分配它:
uploader.parameters = {x: "Test"};
答案 0 :(得分:3)
您需要将其包装在括号中,否则将其解析为binding expression:
Uploader {
sample: selectSampleButton.fileUrl
parameters: ({
x: '3'
y: "String"
})
}
答案 1 :(得分:2)
如果您有一组固定的密钥,则可以创建"分组属性"例如font
或anchors
分组属性的类型只是QObject
派生类,具有相应的Q_PROPERTY
声明,主类使用该实例,在您的情况下,类behin Uploader
作为指向新类型的指针的Q_PROPERTY
。
大致喜欢这个
class UploaderParameters : public QObject
{
Q_OBJECT
Q_PROPERTY(int x MEMBER m_x NOTIFY xChanged)
};
class Uploader : public QObject
{
Q_PROPERTY(UploaderParameters* parameters MEMBER m_parameters CONSTANT)
};
在QML中
Uploader {
parameters.x: 3
}
或
Uploader {
parameters {
x: 3
}
}