[英]How do I convert QMap<QString, QMap<QString, int> > to a QVariant?
QVariant
( QSettings
類需要)支持從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
對象所需的巫術是什么?
在QMap<QString, QVariant(QMap<QString, QVariant>)>
,您已經定義了從字符串到函數類型的映射。 你真正想要的是QMap<QString, QVariant>
。
你不需要QMap<QString,(QVariant)QMap<QString, QVariant> >
因為這只是語法錯誤。 兩個模板參數都需要是類型名稱,並且類型名稱不能成為類型名稱的一部分。
將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.