【发布时间】:2013-06-17 11:40:06
【问题描述】:
我有一个 STL 代码库,需要在 QtQuick 2.0 应用程序(图形界面)和纯 STL 应用程序(服务器)之间共享。该接口可以从共享的 STL 代码库中派生其类,因此它可以具有Q_PROPERTYs、信号、槽等,但共享数据结构需要保持 STL-only。
我想避免数据重复(std::string -> QString 等),所以我尝试在Q_PROPERTY 系统中直接使用std::string。使用 Q_DECLARE_METATYPE(std::string) 和 qRegisterMetaType<std::string>(); 并声明如下属性:
Q_PROPERTY(QString stldata READ stldata WRITE setSTLData NOTIFY stldataChanged)
使我的代码编译,但 QML 仍然不喜欢 std::strings。
使用以下内容编写文本字段:
Text
{
text: myserviceinterface.stldata
}
产生一个警告说Unable to assign std::string to QString,同时附加一个现有的QML字符串:
Text
{
text: "text: " + myserviceinterface.stldata
}
使Text 控件显示一个奇怪的QVariant(std::string)。
我做错了什么?
【问题讨论】:
标签: c++ qt qml stdstring qstring