string - 如何将 QStringView 与 QML 一起使用?
问题描述
我试图了解如何/是否可以QStringView
在从 QML 调用的信号/插槽中使用。例如,在下面的代码中,我可以使用QStringView
代替QString
吗?
Q_PROPERTY(QString priority READ priority WRITE setPriority NOTIFY priorityChanged)
从我从文档中阅读的内容来看,任何支持的类型QVariant
都可以在 a 中使用Q_PROPERTY
,我可以理解为什么QStringView
QVariant 不支持但我正在寻找一种与 QML 一起使用的方法,而不是在两者之间QStringView
传递副本QString
时间。
解决方案
本文档描述了 QML 和 C++ 数据类型之间支持的转换。
支持的数据类型可以分为四类:
- 基本数据类型
QObject
派生类(例如QAbstractItemModel
)- 一些基本清单
- 枚举
答:QStringView
不属于这些类别中的任何一个。因此,不可能将其转移到 QML。
可能的解决方法:您可以尝试创建一个QObject
基于 的包装器QStringView
,它实现了所需的 QML 接口。