gpt4 book ai didi

python - 使用 MouseMoveEvent 移动无框 QDialog

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:19 24 4
gpt4 key购买 nike

所以我有一个无框架的 QDialog,我希望它能够通过单击并拖动它来移动。给定下面的代码,拖动对话框总是将对话框的左上角 (0,0) 捕捉到鼠标。我该如何避免这种情况,或者更确切地说,它的数学原理是什么?

具有以下基本子类的标准 QDialog:

class Main(QtGui.QDialog):
def __init__(self, args):
QtGui.QDialog.__init__(self)

def mouseMoveEvent(self, event):
super(Main, self).mouseMoveEvent(event)
if self.leftClick == True: self.moveWindow(event.globalPos())

def mousePressEvent(self, event):
super(Main, self).mousePressEvent(event)
if event.button() == QtCore.Qt.LeftButton:
self.leftClick = True

def mouseReleaseEvent(self, event):
super(Main, self).mouseReleaseEvent(event)
self.leftClick = False

最佳答案

尝试调用 event.globalPos() 而不是 event.pos()。来自QMouseEvent引用,“如果您因鼠标事件而移动小部件,请使用 globalPos() 返回的全局位置来避免晃动。”

关于python - 使用 MouseMoveEvent 移动无框 QDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com