Я создал простое главное окно с меткой. При наведении на метку появляется предварительный просмотр - qframe (окно почти без полей и без ограничений по размеру по сравнению с главным окном). Проблема здесь в том, что при наведении курсора главное окно быстро мигает, переходя в «активность» и выключаясь, а всплывающее окно не появляется или появляется долго.
Я понял, что когда положение qframe перекрывается/внутри главного окна, то есть когда я устанавливаю положение фрейма в положение мыши — именно тогда возникает проблема с мерцанием. Однако если положение фрейма полностью находится за пределами окна, он легко появляется и исчезает при наведении курсора на метку.
Предварительный просмотр (Соответствующий код):
Код: Выделить всё
class Preview(QtWidgets.QLabel):
def __init__(self, title, value, key, date_time):
super().__init__()
.................
self.setWindowFlags(QtCore.Qt.WindowType.FramelessWindowHint | QtCore.Qt.Popup | QtCore.Qt.Tool)
self.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
self.setFocusPolicy(QtCore.Qt.NoFocus)
self.setAttribute(QtCore.Qt.WA_AlwaysStackOnTop)
.....................
Код: Выделить всё
class HoverLabel(QtWidgets.QLabel):
def __init__(self, preview: Preview):
super().__init__()
self._preview = preview
self.setMouseTracking(True)
self.setText("Status: 21.83")
self.setStyleSheet("""background-color: blue;""")
@typing_extensions.override
def enterEvent(self, event):
global_pos = QtGui.QCursor.pos()
self._preview.move(global_pos)
self._preview.raise_()
self._preview.show()
return super().enterEvent(event)
@typing_extensions.override
def leaveEvent(self, event):
self._preview.hide()
return super().leaveEvent(event)
Код: Выделить всё
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.resize(500, 400)
self._preview_window = Preview("Status", "21.83380094418226", "Property Key", "2026/01/29 - 08:54:20")
self.test_label = HoverLabel(self._preview_window)
container = QtWidgets.QWidget()
layout = QtWidgets.QVBoxLayout(container)
layout.addWidget(self.test_label)
self.setCentralWidget(container)

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-properly
Мобильная версия