将字符串列表从QML发送到C ++

时间:2015-12-11 11:05:19

标签: c++ list qt qml

我有ListModel,我在QML中管理。编辑之后,我想将此模型发送到C ++(例如,作为QStringList,或者我可以在c ++中使用的其他东西)。

我知道我可以将一个从C ++到qml的列表公开并从那里进行编辑,但是对于我的app逻辑并没有多大意义。我可以以某种方式在QML中创建一个类似数据类型的列表,我可以用信号发送到c ++吗?

2 个答案:

答案 0 :(得分:2)

我认为您可以将QStringList发送到C ++代码并且处理不当。请参阅下面链接的文档。

string QML Basic Type

  

与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();
}