[PyQt] downcast a base class to its template subclass

Qin Shen jeanshen at tippett.com
Tue Nov 2 17:55:51 GMT 2010

Hi Phil,

Phil Thompson wrote:
> On Mon, 1 Nov 2010 17:26:41 -0700, Qin Shen <jeanshen at tippett.com> wrote:
>> Hi,
>> In my non-template base class' .sip file, I used %ConvertToSubClassCode 
>> directive
>> to downcast the base class type to its sub-class. If the sub-class is 
>> not a template,
>> it all works fine. Now I need to derive a template sub-class from the 
>> base class,
>> the sipFindType() won't work because there isn't any Python class 
>> implemented
>> for the templated sub-class. What should I do in this case?
> So how is the template sub-class implemented in Python? Your
> %ConvertToSubClassCode will need to explicitly check for the template
> sub-class and return the appropriate Python type.
The .sip file of the template sub-class is based on its C++ .h header file.
Its implementation in the .sip file has been omitted since I thought I 
need to put any implementation in the .sip file as its C++ header file has
been properly included.

When you asked how is the template sub-class implemented in Python, did you
mean that I need to put the C++ style implementation in .sip as well?

Do I need to use %MappedType to convert the template sub-class to/from a 
type. For a non-template class, sip usually generates a .cpp file for it 
as well
as a corresponding sipType_BLAH. In the case of a template class, neither
was generated. I don't see a direct type match between a Python type and any
specialization of the template sub-class, and no sipType_ is generated for
the template class, how am I supposed to convert the type?

Do you have any example on this?

Thanks a lot,


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20101102/a7fbd245/attachment.html>

More information about the PyQt mailing list