1

我想使用 QMenu 作为 gui 中的永久小部件。(我喜欢它的外观和布局,当我将鼠标悬停在它上面时,会弹出必要的菜单,无需单击。尝试使用自定义小部件来模拟它会让人头疼。)我已尝试将其添加到父小部件的布局中,但在第一次使用后,它消失了。我将如何将其保留在那里?

4

1 回答 1

1

我找不到任何QMenu会禁用自动隐藏的选项,所以最简单的方法是覆盖hideEvent. hideEvent在完成之前被解雇hide()。这意味着您不能拦截/忽略hide(),但可以重新显示它:

class PermanentMenu(QtGui.QMenu):
    def hideEvent(self, event):
        self.show()

只需制作您的顶级菜单PermanentMenu,就可以了。

使用它的一个简单示例:

import sys
from PyQt4 import QtGui

class PermanentMenu(QtGui.QMenu):
    def hideEvent(self, event):
        self.show()


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

        self.menu = PermanentMenu()

        self.menu.addAction('one')
        self.menu.addAction('two')

        self.submenu = self.menu.addMenu('submenu')
        self.submenu.addAction('sub one')
        self.submenu.addAction('sub two')

        self.submenu2 = self.menu.addMenu('submenu 2')
        self.submenu2.addAction('sub 2 one')
        self.submenu2.addAction('sub 2 two')

        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.menu)
        self.setLayout(layout)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    w = Window()
    w.show()

    sys.exit(app.exec_())
于 2012-09-23T03:10:26.547 回答