2012-03-04 3 views
1

Я создал кадр с прокруткой, используя приведенный ниже код. И внутри рамки я создал еще один виджет, который можно перетащить. Проблема заключается в том, что присутствует вертикальная полоса прокрутки, и, скажем, вы прокручиваете ее вниз, а затем перетаскиваете объект, объект падает с неправильными координатами y. Могу ли я получить значение полосы прокрутки, а затем добавить ее в координату y? Или есть другие способы решить эту проблему? Заранее спасибо :)Получите значение прокрутки, создайте scrollarea в pyqt4 python

#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.mapFrom, mapTo, mapFromGlobal или mapToGlobal.

Например, если главное окно является виджет, принимающий событие:

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

Большое спасибо. Это действительно работает! – unice