我有ListModel,我在QML中管理。编辑之后,我想将此模型发送到C ++(例如,作为QStringList,或者我可以在c ++中使用的其他东西)。
我知道我可以将一个从C ++到qml的列表公开并从那里进行编辑,但是对于我的app逻辑并没有多大意义。我可以以某种方式在QML中创建一个类似数据类型的列表,我可以用信号发送到c ++吗?
答案 0 :(得分:2)
我认为您可以将QStringList
发送到C ++代码并且处理不当。请参阅下面链接的文档。
与C ++集成时,请注意传递给QML的任何QString值 从C ++自动转换为字符串值,和 反之亦然。
Data Type Conversion Between QML and C++
序列类型为JavaScript数组
在QML中透明地支持某些C ++序列类型 JavaScript数组类型。
特别是,QML目前支持:
QList<int> QList<qreal> QList<bool> QList<QString> and QStringList QList<QUrl>
答案 1 :(得分:0)
如果由于某种原因QVariants发送数据(就像我一样),你可以通过以下方式转换它:
// Test if the value is of the correct type (not nessary of one is sure that it is a list of strings)
if (val.canConvert<QStringList>() && val.convert(QVariant::StringList))
{
return val.toStringList();
}