我有一個需要在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