PyQt Как я могу предотвратить зависание над QMenu от очистки Qstatusbar?
Я использую QStatusBar
распечатать информацию о количестве предметов в списке.
Это работает хорошо, однако, когда я наведите курсор на любой из QMenu
Значки удаляют все данные из QStatus, оставляя их пустыми.
Я работаю в Windows, и я считаю, что это нечто родное, что мне нужно разорвать соединение, которое пытается обновить строку состояния с новой информацией, поскольку у меня не было этой проблемы при запуске моего окна из Maya.
Любые идеи о том, как я могу это исправить, были бы великолепны! Я бы не хотел создавать новый виджет для хранения этой информации.
1 ответ
Есть разные способы
Самый простой способ это добавить QLabel
в строке состояния, установите его stretch
в ненулевое значение и измените текст метки вместо.
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