如何在 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 接口。
我正在尝试了解 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 接口。