On 3/13/09, Phil Thompson <p...@riverbankcomputing.com> wrote:
> On Fri, 13 Mar 2009 11:44:57 +0100, Wolfgang Rohdewald
> <wolfg...@rohdewald.de> wrote:
>> On Freitag, 13. März 2009, Till Gerken wrote:
>>
>>> The QString() that I am passing as reference to the C++ class
>>> KCoreConfigSkeleton exists as local variable in my Python class
>>> derived from KCoreConfigSkeleton. Now any code that interacts with
>>> KCoreConfigSkeleton (C++ or Python) may change this QString instance.
>>
>> this is because QString() is mutable while python strings are immutable.
>> When dealing with KCoreConfig, do not use QString as local variables,
>> always convert explicitly from/to python strings.
>
> No, do exactly the opposite. If you pass a Python string then it will be
> converted to a QString under the covers. Any changes to that QString will
> then be discarded.

The weird thing in this case is that the changes made by
KCoreConfigSkeleton are discarded. Even if I call
KCoreConfigSkeleton::ItemString::setValue(), the referenced QString is
not updated (although it will then be written to disk correctly). This
suggests that two instances of the same QString exist.

I can live with the workaround calling
KCoreConfigSkeleton::ItemString::setValue() and getValue(), but I
wonder where the bug is.

Any pointers would be appreciated.

Till

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to