[PyQt] Calling subclass-overridden methods from C++

Alessandro Pasotti apasotti at gmail.com
Tue Oct 7 15:24:37 BST 2014


2014-10-07 16:11 GMT+02:00 Phil Thompson <phil at riverbankcomputing.com>:
> On 07/10/2014 2:34 pm, Alessandro Pasotti wrote:
>>
>> 2014-10-07 15:31 GMT+02:00 Alessandro Pasotti <apasotti at gmail.com>:
>>>
>>> Hi,
>>>
>>> I'm currently busy trying to add python plugins support to the server
>>> side of QGIS (http://www.qgis.org).
>>>
>>> Basically, I've written all the c++ part, and python plugins are
>>> successfully loaded and started, what I still don't understand is how
>>> to call from C++ code the Python overridden methods.
>>>
>>> In C++ I have a class QgsServerFilter with a default empty method for
>>> requestReady()
>>>
>>
>> Sorry: silly TAB in Gmail.
>>
>> In the Python plugin I do something like:
>>
>> class HelloServer(QgsServerFilter):
>>     def requestReady()
>>         pass
>>
>>
>> then I pass the HelloServer instance to C++ (stored into "filter") and
>> later on C++ calls:
>>
>> filter->requestReady()
>>
>> but instead of calling HelloServer->requestReady() the base (empty)
>> method is called.
>>
>> What am I doing wrong?
>
>
> Impossible to say with the information you have provided.

This is good news, it means that my approach wasn't completely wrong,
here some details:

The relevant code can be found here (C++):

The QgsServerFilter class:
https://github.com/elpaso/QGIS/blob/serverplugins-iface/src/mapserver/qgsserverfilter.h

main application C++ calls:
https://github.com/elpaso/QGIS/blob/serverplugins-iface/src/mapserver/qgis_map_serv.cpp#L366

and here (SIP):
https://github.com/elpaso/QGIS/blob/serverplugins-iface/python/server/qgsserverfilter.sip

The test plugin Python code is here:
https://dpaste.de/SOg6


-- 
Alessandro Pasotti
w3:   www.itopen.it


More information about the PyQt mailing list