[PyQt] QGLWidget c++ widget works, SIP binding doesn't

Josh Knox jknox at irobot.com
Tue Apr 20 20:56:16 BST 2010


Hi All,

I've got a simple custom QGLWidget that works fine when loaded from c++. 
(basically the Sierpinski demo)

I've built a SIP binding against it, that I can load from python but it 
only ever displays a black area and it appears that the event loop never 
starts.

My SIP file is trivial:

    %Import QtCore/QtCoremod.sip
    %Import QtGui/QtGuimod.sip

    %Import QtOpenGL/QtOpenGLmod.sip
    %Module MyGLTest 0


    class MyGLWidget : QGLWidget
    {
    %TypeHeaderCode
    #include "../MyGLTest/include/QtGLTest.hpp"
    #include <QGLWidget>
    %End

    public:
      
        MyGLWidget(QWidget* parent /TransferThis/ = 0, const QGLWidget*
    shareWidget = 0, Qt::WindowFlags f = 0);

    };

My Python script to show it is also trivial (essentially equivalent to 
the C++ code to do the same):

    import sys
    from PyQt4 import QtGui
    from MyGLTest import MyGLWidget

    if __name__ == "__main__":

        app = QtGui.QApplication(sys.argv)

        # test the simple GL widget
        myGLWidget = MyGLWidget()
        myGLWidget.resize(400, 350)
        myGLWidget.setWindowTitle('MyGLWidget')
        myGLWidget.show()

        app.exec_()


This just launches a Qt window with an all black widget area.

So, given that the C++ widget works, what could I be missing that's 
prevent the SIP binding from running properly?

I'm still new at this, so any ideas appreciated!


Thanks,

Josh


More information about the PyQt mailing list