我有一个需要在QtQuick 2.0应用程序(图形界面)和纯粹的STL应用程序(服务器)之间共享的STL代码库。该接口可以从共享的STL代码库派生它的类,因此它可以具有信号,插槽等,但是共享数据结构需要保持仅STL。在QML中使用std :: string
我想避免数据的重复(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::string
秒。
写入一个文本字段:
Text
{
text: myserviceinterface.stldata
}
产生警告说Unable to assign std::string to QString
,而追加现有的QML字符串:
Text
{
text: "text: " + myserviceinterface.stldata
}
使得Text
控制显示一个奇怪的QVariant(std::string)
。
我在做什么错?
你说得对,我放弃了。然而,拥有已经可用的'std :: string'的'QString'副本并不是理想的解决方案。这意味着从已经受限的移动设备中消耗更多的内存,更新两个字符串时的更多计算等等。 – Avio
对不起,你没有提到'std :: string'的另一个'QString'副本作为成员变量,我只是想到了它。好吧,我想我可以在每次界面需要显示变量时转换它。 – Avio