[PyQt] Re: Serious problem with QVariant v2 API and QSettings
Phil Thompson
phil at riverbankcomputing.com
Tue Dec 29 14:43:59 GMT 2009
On Tue, 29 Dec 2009 14:45:16 +0100, detlev <detlev at die-offenbachs.de>
wrote:
> Hi,
>
> QSettings is not working correctly with the QVariant v2 API. Enter the
> following in a Python console.
>
>>>> import sip
>>>> sip.setapi("QString",2)
>>>> sip.setapi("QVariant",2)
>>>> from PyQt4.QtCore import *
>>>> s=QSettings()
>>>> s.setValue("k1", 1)
>>>> s.value("k1")
> 1
>>>> s=None
>>>> s=QSettings()
>>>> s.value("k1")
> u'1'
>>>>
>
> Setting the variable s to None causes the contents to be written to
disk.
> After recreating the QSettings object, which causes the previously saved
> file
> to be read, the formerly int value has changed to a unicode string. Same
> happens for bool values (and probably other Python types). A list of
> integers
> is changed to a list of strings.
...which is exactly what you would expect if the back-end format being
used doesn't store the types of values.
You have to convert the value to an object of the required type - just
like you do with the v1 API using one of QVariant's methods.
Phil
More information about the PyQt
mailing list