Reputation: 126105
PyQt 4.5.4, Python 2.6.2
Since version 4.5.2 PyQt is able to accept any Python objects where formerly only QVariants
were allowed. This leads to some problems:
>>> itemModel.data(index, Qt.EditRole)
<Product object at 0xb7ce766c>
>>> index.data(Qt.EditRole)
<QVariant object at 0xb7ce768c>
Is there a possibility to remove this inconsistence?
Upvotes: 2
Views: 2202
Reputation: 126105
PyQt 4.6, using the modern API:
The
QVariant
class is implemented as a mapped type. Any Python object can be passed when aQVariant
instance is expected. When Qt returns aQVariant
then it will automatically be converted to the original Python object or an equivalent.None
is interpreted as an invalidQVariant
and vice versa.
Upvotes: 4
Reputation: 126105
The only solution I have found is converting every value to a QVariant and then back:
QVariant(possiblyAQVariant).toPyObject()
This works for QVariants and Python types.
Upvotes: 1
Reputation: 1007
You could use the .toPyObject() method on a QVariant. I doubt that this works for custom types, though.
Upvotes: 1