Qt, multiple inheritance: QApplication and new-style class not possible

Phil Thompson phil at riverbankcomputing.co.uk
Wed May 12 17:15:25 EDT 2004


On Wednesday 12 May 2004 12:01 pm, Sibylle Koczian wrote:
> I want to try out several applications, all doing the same thing but
> using different GUI libraries (Tkinter, Qt, wxWindows). Using an example
> I found in a book I wrote a class containing the GUI independent methods
> of the application, let's call it MyAppClass. The book is written before
> Python 2.2, so it uses classic classes, but I want some properties, so I
> made MyAppClass a new style class.
>
> For the Tkinter GUI I derive another class, TkAppClass, from this, whose
> methods use Tkinter. As Qt applications need an application class
> derived from QApplication, I wanted to derive my QAppClass from both
> classes, QApplication and MyAppClass, but got a TypeError: "cannot
> create a class derived from a SIP generated class (QApplication) and a
> new-style class - use SIP v4 or later instead".
>
> Now I see three different ways out of this:
>
> a) use SIP v4, but it's pre-release. Moreover I'm just starting with
> Linux anyway, so I'd like to keep to ready-made rpm packages for my
> distribution (SuSE 9.1) and I can't find any.
>
> b) make MyAppClass a classic class.
>
> c) instead of deriving my QAppClass from QApplication and from
> MyAppClass, derive it only from QApplication and put a reference to a
> MyAppClass instance into it as an attribute.
>
> What's the best way (and why), or is there a d)?

I'd recommend a). The only reason SIP v4 is still a pre-release is that I said 
that I'd only release the final version when the documentation was complete. 
The code itself is stable with no known outstanding issues.

Phil




More information about the Python-list mailing list