簡體   English   中英

我如何轉換QMap <QString, QMap<QString, int> &gt;到QVariant?

[英]How do I convert QMap<QString, QMap<QString, int> > to a QVariant?

QVariantQSettings類需要)支持從QMap<QString, QVariant>

但試圖初始化這樣的事情:

QMap<QString, QVariant(QMap<QString, QVariant>)> i;

給出錯誤:

函數返回一個函數。

然后我為QVariant()嘗試了QMap<QString, QVariant>重載並得到了

錯誤:沒有用於調用QVariant::QVariant(QMap<QString, QMap<QString, int> >&)匹配函數QVariant::QVariant(QMap<QString, QMap<QString, int> >&)

現在我嘗試了一個類型轉換:

QMap<QString, (QVariant)QMap<QString, QVariant> > i;

得到了

模板參數2無效
'之前聲明中的無效類型' ; '令牌

那么將嵌套QMap轉換為QVariant對象所需的巫術是什么?

  1. QMap<QString, QVariant(QMap<QString, QVariant>)> ,您已經定義了從字符串到函數類型的映射。 你真正想要的是QMap<QString, QVariant>

  2. 你不需要QMap<QString,(QVariant)QMap<QString, QVariant> >因為這只是語法錯誤。 兩個模板參數都需要是類型名稱,並且類型名稱不能成為類型名稱的一部分。

  3. QMap<QString, int> (或幾乎任何其他類型的QMap )放入QVariant將不起作用。 唯一可以轉換為QVariant QMap類型是QMap<QString,QVariant>

    這種類型的typedef可能很有用: QVariantMap 如果您堅持在這種情況下使用QVariantMap ,那么事情將適合您。

報告的錯誤是QVariant(...)不是類型,而是函數(c-tor)。

你應該剛剛使用過: Map<QString, QVariant> i; 並且僅在為地圖指定值時使用QVariant(QMap<QString, QVariant>) 問題的關鍵是QVariant什么真正的。 所以地圖QVariants ,可以具有int在一個位置(包含在QVariant )和QDate在另一個。 因此,在聲明類型時,您無法指定要將QVariant保留的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM