[PyKDE] "None" conversion to QString?
Giovanni Bajo
rasky at develer.com
Sun Apr 10 18:02:30 BST 2005
Phil Thompson <phil at riverbankcomputing.co.uk> wrote:
>> is there a point on allowing None to be converted to QString, that
>> is to match QString in argument list of functions?
>>
>>>>> from qt import *
>>>>> a = QApplication([])
>>>>> QPushButton("foo", None)
>>
>> <qt.QPushButton object at 0x00813600>
>>
>>>>> QPushButton(None, None)
>>
>> <qt.QPushButton object at 0x008135D0>
>>
>> This makes it impossible for instance to disambiguate between the
>> constructors of QListViewItem, for instance:
>>
>> QListViewItem(QListViewItem* parent, QString label1, QString label2
>> = "", QString label3 = "")
>> QListViewItem(QListViewItem* parent, QListViewItem* after, QString
>> label1, QString label2 = "", QString label3 = "")
>>
>> If you call this as:
>>
>> QListView(None, None, "foo")
>>
>> PyQt will effectively call the first constructor rather than the
>> second. I believe I could use sip.cast to disambiguate but I would
>> like to know the rationale behind the choice of allowing None as
>> null string.
>
> Hmm - a good question. Apart from QByteArray, QCString and QString,
> PyQt consistently maps NULL to None and vice versa. I suspect its
> from the early days of PyQt when the signature checking wasn't as
> sophisticated and, in particular, didn't check when it knew a pointer
> was going to be dereferenced.
>
> The current behaviour is wrong and I'll change it. There is a danger
> that the change might break some code.
Yes, but as with the typed enum change, it's for a good cause. Thanks.
Giovanni Bajo
More information about the PyQt
mailing list