pyQt and python-ogre integration ...

futnuh

21-03-2008 11:07:04

Does anyone have experience using pyQt with python-ogre? If so, any chance of posting a hello-world demo app? As always, any help is much appreciated.

pmpp

09-04-2008 04:53:33

hi, i saw no problem having Qt widgets on top of ogre render windowed mode ( pyqt4 / winxp /ogre1.4.7 ).

note that in fullscreen ogre , you can't have qt widgets active and ogre rendering under because it will flicker a lot so don't force renderwindow.update() , for fullscreen i think QScreen would help but i didn't test it.


Windowed ogre and qt widgets together and having them overlapping is nice for making some kind of 3d editor/viewer like app.


init your Qt widget this way :

class MyQtWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setMouseTracking(True)
self.setWindowFlags(self.windowFlags() | QtCore.Qt.FramelessWindowHint|QtCore.Qt.WindowStaysOnTopHint)


def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
event.accept()

def mouseMoveEvent(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(event.globalPos() - self.dragPosition)
event.accept()



pseudo code for main loop

if __name__ == '__main__':
qtapp = QtGui.QApplication(sys.argv)
myqtwdg = MyQtWidget()


#create your ogre scenemanager,renderwindow, camera ...
create_all_stuff()

renderWindow.reposition(X,Y)
place_myqtwidget_for(X,Y)

myqtwdg.show()

while yourflagtocontinue:
ogre.Root().renderOneFrame()
qtapp.processEvents()


off course you may have to care about ogre renderwindow position when needed and translate your main qt widget to match the new position.