[PyQt] Overriding only one of two C++ virtual methods with different signature

Phil Thompson phil at riverbankcomputing.com
Sat Jan 19 19:21:10 GMT 2008


On Saturday 19 January 2008, Adeodato Simó wrote:
> Hello.
>
> I've subclassed in Python from a C++ class that has:
>
>   public slots:
>
>     virtual void updateSearch (const QString &pattern=QString());
>
>   protected:
>
>     virtual void updateSearch (QTreeWidget *treeWidget);
>
> I want to provide my own updateSearch(), but only for the slot case. Is
> this possible at all? At the moment, my python function is gettin called
> in both cases.
>
> Any help appreciated.

You need to handle both cases. Check the type of the argument to determine 
which one is called. For the one you aren't interested in, just call the base 
implementation...

    def updateSearch(self, arg):
        if not isinstance(arg, QString):
            superclass.updateSearch(self, arg):
        else:
            do_your_thing()

Phil



More information about the PyQt mailing list