PyQt如何防止悬停在QMenu上清除Qstatusbar?

时间:2017-02-23 18:25:10

标签: python pyqt pyside qmenu qstatusbar

我正在使用QStatusBar打印列表中有多少项的信息。

这很有效,但是当我将鼠标悬停在任何QMenu图标上时,它会清除QStatus中的所有数据,并将其留空。

我在Windows工作,我相信我需要破解连接的本机,不断尝试用新信息更新状态栏,因为我没有从Maya运行我的窗口时出现此问题。

关于如何解决这个问题的任何想法都会很棒! 我不想创建一个新小部件来保存这些信息。

1 个答案:

答案 0 :(得分:2)

有不同的方法

最简单的方法是将QLabel添加到状态栏,将其设置为stretch为非零值,然后更改Label的文本。

self.status_label = QtGui.QLabel()
self.ui.statusbar.addPermanentWidget(self.status_label, 100)
self.status_label.setText('wow such label')

另一种方法是通过子类化或猴子修补在QStatusBar上安装事件过滤器。 后者的例子:

class MainWindow(QMainWindow):

    def __init__(self):
        ...
        self.statusBar().eventFilter = self.event_filter
        self.installEventFilter(self.statusBar())
        ...

    @staticmethod
    def event_filter(_, event):
        if event.type() == QtCore.QEvent.StatusTip:
            return True
        return False