QMenu上下文菜单初始大小太小,QtOpenGL.QGLWidget中没有内容

时间:2015-05-14 19:03:13

标签: python-2.7 pyqt pyqt4 contextmenu qglwidget

我正在为PyQt 4.8.6使用Python 2.7.9绑定。我想在QtOpenGL.QGLWidget

中创建一个上下文菜单
class OpenGLWidget(QtOpenGL.QGLWidget):
    def __init__(self, parent=None):
        QtOpenGL.QGLWidget.__init__(self, parent)
        #    context menu properties
        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)

    def contextMenuEvent(self, event):
        self.popMenu = QtGui.QMenu(parent=self)
        print self.popMenu.sizeHint()
        print self.popMenu.size()
        self.popMenu.setFixedWidth(100)
        self.popMenu.setFixedHeight(100)
        print self.popMenu.size()
        self.popMenu.addAction(QtGui.QAction('Refresh', self.updateGL()))
        self.popMenu.addSeparator()
        self.popMenu.addAction(QtGui.QAction('test2', None))
        self.popMenu.exec_(event.globalPos())

    def mousePressEvent(self, event):
        self.last_pos = QtCore.QPoint(event.pos())

        if event.button() == QtCore.Qt.RightButton:
            self.contextMenuEvent(event)

打印出来:

>>> PyQt4.QtCore.QSize(2, 2)
>>> PyQt4.QtCore.QSize(100, 30)
>>> PyQt4.QtCore.QSize(100, 100)

上下文菜单看起来是空的,如下所示:

Empty context menu

我想知道如何将上下文菜单大小设置为可调整,也可以从初始设置中看到?你有什么想法为什么里面没有菜单文字(功能)?我也在树视图中使用上下文菜单,它工作正常,但在这里我有一个问题。如果我设置了固定的菜单大小,则菜单小于坐标系轴的字母。

1 个答案:

答案 0 :(得分:0)

看起来定义动作的方法并不是很好,尽管我在一个例子中找到了它。上下文菜单项(操作)应定义为:

_updateGLAction = popMenu.addAction("Refresh")
_updateGLAction.triggered.connect(self.repaintGL)