2014-10-01 132 views
1

任何人都可以告訴我以下簡單的源代碼有什麼問題。在下面的圖片中,您可以看到我的問題。我想要一個由菜單和QGLWidget組成的小部件,但是QGLWidget覆蓋了菜單。如果我使用QtGui.QWidget,它可以正常工作。我怎樣才能增加這些元素之間的空間?菜單和QtOpenGL.QGLWidget之間的空間

圖1:QGLWidget來繪圖的

enter image description here

代碼:

class Profile(QtOpenGL.QGLWidget): 
    def __init__(self, parent = None): 
     super(Profile, self).__init__(parent) 

    def initializeGL(self): 
     GL.glClearColor(1.0, 1.0 , 1.0, 1.0) 

    def paintGL(self): 
     GL.glMatrixMode(GL.GL_MODELVIEW) 
     GL.glLoadIdentity() 
     GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) 

測試插件的代碼的正常工作:主窗口部件的

class TestWidget(QtGui.QWidget): 
    def __init__(self, parent = None): 
     super(TestWidget, self).__init__(parent) 

     editor = QtGui.QTextEdit() 
     grid = QtGui.QGridLayout() 
     grid.addWidget(editor, 1,1) 

     self.setLayout(grid) 

代碼:

class ProfileDetectWidget(QtGui.QWidget): 
    def __init__(self, parent = None): 
     super(ProfileDetectWidget, self).__init__(parent) 

     self.ogl_widget = Profile() 
     # self.ogl_widget = TestWidget() 

     grid = QtGui.QGridLayout() 
     grid.addWidget(self.ogl_widget, 2,1) 

     self.createActions() 
     self.createMenus() 

     self.setLayout(grid) 
     self.resize(420,320) 

    def createActions(self): 
     self.openAct = QtGui.QAction('Open...', self) 

    def createMenus(self): 
     fileMenu = QtGui.QMenu("File", self) 
     fileMenu.addAction(self.openAct) 

     menubar = QtGui.QMenuBar(self) 
     menubar.addMenu(fileMenu) 

if __name__ == '__main__': 
    app = QtGui.QApplication(["PyQt OpenGL"]) 
    widget = ProfileDetectWidget() 
    widget.show() 
    app.exec_() 

回答

1

在主控件的代碼,我改變了

grid = QtGui.QGridLayout() 
grid.addWidget(self.ogl_widget, 2,1) 

space = QtGui.QSpacerItem(0,15) 
grid = QtGui.QGridLayout() 
grid.addItem(space) 
grid.addWidget(self.ogl_widget, 2,1) 

,它似乎工作。