如何在 QML 中使用 QStringView?

How to use QStringView with QML?

我正在尝试了解 how/if 我可以在从 QML 调用的 signal/slots 中使用 QStringView。例如,在下面的代码中,我可以使用 QStringView 而不是 QString 吗?

Q_PROPERTY(QString priority READ priority WRITE setPriority NOTIFY priorityChanged)

根据我从文档中阅读的内容,QVariant 支持的任何类型都可以在 Q_PROPERTY 中使用,我可以理解为什么 QVariant 不支持 QStringView但我正在寻找一种将 QStringView 与 QML 一起使用的方法,而不是一直在两者之间传递 QString 副本。

QML 和 C++ 数据类型之间支持的转换在 this document 中描述。

支持的数据类型可以分为四类:

  • 基本数据类型
  • QObject 派生 类(例如 QAbstractItemModel
  • 一些基本列表
  • 枚举

答案:QStringView 不属于任何这些类别。所以,不可能将它转移到 QML。

可能的解决方法:您可以尝试围绕 QStringView 创建一个基于 QObject 的包装器,它实现了所需的 QML 接口。