我使用下面的代码创建了一个带滚动的框架。在框架内我创建了另一个可以拖放的小部件。问题是当垂直滚动条存在时,让你说它向下滚动然后拖放对象,对象下降到错误的y坐标。我可以获取滚动条的值然后将其添加到y坐标吗?或者还有其他方法可以解决这个问题吗?在此先感谢:)
#Main Layout
layout = QtGui.QVBoxLayout()
layout.setSpacing(0)
self.centralWidget.setLayout(layout)
#Content Layout
self.frame = QtGui.QFrame()
self.frame.setMinimumSize(400, 1000)
self.scrollArea = QtGui.QScrollArea()
self.scrollArea.setWidget(self.frame)
self.scrollArea.setWidgetResizable(True)
layout.addWidget(self.scrollArea)
答案 0 :(得分:2)
您可以使用以下内容获取滚动条的值:
yOffset = self.scrollArea.verticalScrollBar().value()
但是可能还有一个额外的偏移量来计算。
您还可以使用QWidget.mapFrom
,mapTo
,mapFromGlobal
或mapToGlobal
将鼠标坐标映射到滚动区域内窗口小部件的相对坐标。
例如,如果主窗口是接收事件的小部件:
def dropEvent(self, event):
pos = self.frame.mapFrom(self, event.pos())