【发布时间】:2016-03-17 06:40:42
【问题描述】:
我有我在 QML 中管理的 ListModel。编辑后,我想将此模型发送到 C++(例如作为 QStringList,或者我可以在 C++ 中使用的其他东西)。
我知道我可以将 C++ 中的列表公开到 qml 并从那里编辑它,但对于我的应用程序逻辑来说,这并没有真正意义。我可以以某种方式在 QML 中创建一个类似数据类型的列表,我可以用信号发送到 c++ 吗?
【问题讨论】:
我有我在 QML 中管理的 ListModel。编辑后,我想将此模型发送到 C++(例如作为 QStringList,或者我可以在 C++ 中使用的其他东西)。
我知道我可以将 C++ 中的列表公开到 qml 并从那里编辑它,但对于我的应用程序逻辑来说,这并没有真正意义。我可以以某种方式在 QML 中创建一个类似数据类型的列表,我可以用信号发送到 c++ 吗?
【问题讨论】:
我认为您可以将QStringList 发送到 C++ 代码,它会得到处理。请参阅下面链接的文档。
与 C++ 集成时,请注意传递给 QML 的任何 QString 值 从 C++ 自动转换为字符串值,并且 反之亦然。
Data Type Conversion Between QML and C++
JavaScript 数组的序列类型
某些 C++ 序列类型在 QML 中被透明地支持为 JavaScript 数组类型。
具体来说,QML 目前支持:
QList<int> QList<qreal> QList<bool> QList<QString> and QStringList QList<QUrl>
【讨论】:
如果你因为某种原因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();
}
【讨论】: