我有一个 STL 代码库,需要在 QtQuick 2.0 应用程序(图形界面)和纯 STL 应用程序(服务器)之间共享。接口可以从共享的 STL 代码库派生其类,因此它可以具有Q_PROPERTY
s、信号、槽等,但共享数据结构需要保持 STL-only。
我想避免数据重复(std::string
->QString
等),所以我尝试std::string
直接在Q_PROPERTY
系统内使用。使用Q_DECLARE_METATYPE(std::string)
和qRegisterMetaType<std::string>();
声明属性,例如:
Q_PROPERTY(QString stldata READ stldata WRITE setSTLData NOTIFY stldataChanged)
使我的代码编译,但 QML 仍然不喜欢std::string
s.
使用以下内容编写文本字段:
Text
{
text: myserviceinterface.stldata
}
Unable to assign std::string to QString
在附加现有 QML 字符串时产生警告语句:
Text
{
text: "text: " + myserviceinterface.stldata
}
使Text
控件显示怪异QVariant(std::string)
。
我究竟做错了什么?