【发布时间】:2021-02-23 16:27:31
【问题描述】:
我遇到了一个问题,我使用 eventFilter() 为小部件实现了拖动功能,但是当我向右拖动并且我的光标悬停在小部件上时,我的情况似乎是 QPushButton停止跟踪,直到我将鼠标悬停在小部件之外
我该如何解决这个问题?
class widget1(QWidget):
def __init__(self):
super().__init__()
self.widget = QPushButton("button0", self)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.createbutton = QPushButton('+', self)
self.createbutton.setGeometry(5, 5, 15, 15)
self.createbutton.clicked.connect(self.createWidget)
self.show()
def createWidget(self):
self.new_widget = widget1()
self.new_widget.setParent(self)
self.new_widget.show()
self.new_widget.installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QEvent.MouseMove:
MousePos = QPoint(event.pos())
if event.buttons() == Qt.LeftButton:
source.move(source.x() + MousePos.x(), source.y() + MousePos.y())
return super(MainWindow, self).eventFilter(source, event)
基本上我有一个类,其中有一个名为 widget1() 的小部件(这将是我将来的自定义小部件)然后我每次按 @987654327 时将其动态添加到窗口中@ 使用.show() 而不是使用布局,然后将事件过滤器安装到它,以便它可以允许拖动。
【问题讨论】:
标签: python python-3.x pyqt5