1

以下のコードを使用して、スクロール付きのフレームを作成しました。そして、フレーム内に、ドラッグアンドドロップできる別のウィジェットを作成しました。問題は、垂直スクロールバーが存在し、それを下にスクロールしてからオブジェクトをドラッグアンドドロップすると、オブジェクトが間違った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)
4

1 に答える 1

2

スクロールバーの値は、次のコマンドで取得できます。

yOffset = self.scrollArea.verticalScrollBar().value()

ただし、計算する追加のオフセットがある場合があります。

QWidget.mapFrom、、、またはを使用してmapTo、マウス座標をスクロール領域内のウィジェットの相対座標にマップすることもできます。mapFromGlobalmapToGlobal

たとえば、メインウィンドウがイベントを受信するウィジェットである場合:

def dropEvent(self, event):
    pos = self.frame.mapFrom(self, event.pos())
于 2012-03-05T04:30:58.170 に答える