[PyQt] Incorrect base for wrapped class

Kelly Burkhart kelly.burkhart at gmail.com
Tue Jul 3 18:28:16 BST 2007


On 7/3/07, Phil Thompson <phil at riverbankcomputing.co.uk> wrote:
> On Tuesday 03 July 2007 4:05 pm, Kelly Burkhart wrote:
> > Greetings,
> >
> > I am trying to wrap QAbstractTableModel.  When I instantiate my code,
> >
> > it shows an incorrect base class:
> > >>> from PyQt4 import QtGui, QtCore
> > >>> from ecn.gui.log_view_model_base import LogViewModelBase
> > >>> print LogViewModelBase.__base__
> >
> > <class 'PyQt4.QtCore.QProcess'>
> >
> >
> > LogViewModelBase is a sip wrapper of a trivial class derived from
> > QAbstractTableModel.  I have no idea how QProcess gets chosen as a
> > base (incidentally, if I derive from QAbstractItemMode, QIODevice is
> > chosen as base).
> >
> > Can anyone provide a hint as to what I am doing wrong or failing to
> > specify?  Thanks!
>
> This typically happens when a different version of SIP has been used to build
> the different modules, or a different set of PyQt .sip files were used.
>
> Try rebuilding all the SIP generated modules.
>

Thanks for the reply Phil, however that doesn't appear to fix things.
Here's what I've done since last night:

Built qt with following config: ./configure -prefix /opt/qt -qt-gif
-confirm-license
Note, the only Qt executables in the path are the ones in /opt/qt/bin.

Built sip 4.6:
...> tar xzf sip-4.6.tar.gz
...> cd sip-4.6
...> python configure.py -p linux-g++-64
...> make
...> sudo make install
Built QScintilla:
...> tar xzf QScintilla-1.73-commercial-2.1.tar.gz
...> cd QScintilla-1.73-commercial-2.1
.../QScintilla-1.73-commercial-2.1> cd Qt4/
.../QScintilla-1.73-commercial-2.1/Qt4> qmake qscintilla.pro
.../QScintilla-1.73-commercial-2.1/Qt4> make
.../QScintilla-1.73-commercial-2.1/Qt4> sudo make install
Built PyQt:
...> tar xzf PyQt-x11-commercial-4.2.tar.gz
...> cd PyQt-x11-commercial-4.2
.../PyQt-x11-commercial-4.2> cp ../pyqt-commercial.sip sip/
.../PyQt-x11-commercial-4.2> python ./configure.py
.../PyQt-x11-commercial-4.2> make
.../PyQt-x11-commercial-4.2> sudo make install

Built my class and see the same results.

If I change the base class of my c++ class, I get seemingly random
different bases when imported in python:

QObject --> PyQt4.QtCore.QAbstractFileEngineHandler
QIODevice --> PyQt4.QtCore.QMimeData
QFile --> PyQt4.QtCore.QFileSystemWatcher

Any other ideas?

Thanks,

-K


More information about the PyQt mailing list