【问题标题】:Sending a list of strings from QML to C++将字符串列表从 QML 发送到 C++
【发布时间】:2016-03-17 06:40:42
【问题描述】:

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

我知道我可以将 C++ 中的列表公开到 qml 并从那里编辑它,但对于我的应用程序逻辑来说,这并没有真正意义。我可以以某种方式在 QML 中创建一个类似数据类型的列表,我可以用信号发送到 c++ 吗?

【问题讨论】:

    标签: c++ list qt qml


    【解决方案1】:

    我认为您可以将QStringList 发送到 C++ 代码,它会得到处理。请参阅下面链接的文档。

    string QML Basic Type

    与 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>
    

    【讨论】:

      【解决方案2】:

      如果你因为某种原因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();
      }
      

      【讨论】:

      • ……还是只使用 QStringList 属性? (不必使用 QVariants)。单独的“val.toStringList()”是关于什么的?它只是返回一个值,然后不使用它。
      • 如何在 qml 中正确使用 qstringlist 并将其发送到 c++?我的答案是我能找到的最好的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多