2012-03-04 3 views
1

以下のコードを使用してscrollを使ってフレームを作成しました。そしてフレームの中で私はドラッグアンドドロップできる別のウィジェットを作った。問題は、垂直スクロールバーが存在し、それを下にスクロールしてオブジェクトをドラッグアンドドロップすると、オブジェクトが間違ったy座標に落ちるということです。スクロールバーの値を取得して、それをy座標に追加できますか?あるいは、これを解決する他の方法がありますか?事前に感謝:)pyqt4 pythonのscrollareaでスクロールバーの値を取得

#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) 

答えて

2

あなたはしてスクロールバーの値を取得できます。

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

しかし、計算するオフセットの追加があるかもしれません。

またQWidget.mapFrommapTomapFromGlobalまたはmapToGlobalを使用してスクロール領域内のウィジェットの相対座標にマウスの座標をマッピングすることができます。例えば

、メインウィンドウがイベントを受け取るウィジェットの場合:

def dropEvent(self, event): 
    pos = self.frame.mapFrom(self, event.pos()) 
+0

はどうもありがとうございました。それは実際に動作します! – unice

関連する問題