Пример #1
0
 def mouseMoveEvent(self, event):
     """ Re-implemented to create a drag event when the mouse is moved for a
     sufficient distance while holding down mouse button.
     """
     # go into the drag logic only if a drag_obj is active
     if self.drag_obj:
         # is the left mouse button still pressed?
         if not event.buttons() == QtCore.Qt.LeftButton:
             pass
         # has the mouse been dragged for sufficient distance?
         elif (
             event.pos() - self.drag_obj.start_pos
         ).manhattanLength() < QtGui.QApplication.startDragDistance():
             pass
         # initiate drag
         else:
             drag = QtGui.QDrag(self.drag_obj.widget)
             mimedata = PyMimeData(data=self.drag_obj, pickle=False)
             drag.setPixmap(self.drag_obj.get_pixmap())
             drag.setHotSpot(self.drag_obj.get_hotspot())
             drag.setMimeData(mimedata)
             drag.exec_()
             self.drag_obj = None  # deactivate the drag_obj again
             return
     return super(DraggableTabBar, self).mouseMoveEvent(event)
Пример #2
0
    def startDrag(self, actions):
        if self._editor.factory.drag_external:
            idxs = self.selectedIndexes()
            rows = sorted(list(set([idx.row() for idx in idxs])))
            drag_object = [(ri, self._editor.value[ri]) for ri in rows]

            md = PyMimeData.coerce(drag_object)

            self._dragging = self.currentIndex()
            drag = QtGui.QDrag(self)
            drag.setMimeData(md)
            drag.exec_(actions)
        else:
            super(_TableView, self).startDrag(actions)