2009-09-03 112 views
2

PyQt的4.5.4,2.6.2的Python是否有可能將QVariants自動轉換爲Python對象?

自版本4.5.2 PyQt的是能夠接受在那裏以前只能QVariants允許任何Python對象。這導致一些問題:

>>> itemModel.data(index, Qt.EditRole) 
<Product object at 0xb7ce766c> 
>>> index.data(Qt.EditRole) 
<QVariant object at 0xb7ce768c> 

是否有可能消除這種不一致?

回答

4

PyQt的4.6,使用現​​代API:

QVariant類被實現爲 映射類型。當預期的QVariant實例爲 時,任何Python對象都可以通過 。當Qt返回一個QVariant 時,它會自動將 轉換爲原始的Python 對象或等價物。 None是 解釋爲無效QVariant和 反之亦然。

1

您可以在QVariant上使用.toPyObject()方法。不過,我懷疑這是否適用於自定義類型。

+1

它的確如此。但事實上,一旦對象不是QVariant,麻煩就開始了。 – 2009-09-15 17:45:31

1

唯一的解決辦法,我發現每值轉換爲的QVariant,然後回:

QVariant(possiblyAQVariant).toPyObject() 

這適用於QVariants和Python類型。

相關問題