def startDrag(self, dropActions): item = self.currentItem() icon = item.icon() data = QByteArray() stream = QDataStream(data, QIODevice.WriteOnly) stream.writeQString(item.text()) stream << icon mimeData = QMimeData() mimeData.setData("application/x-icon-and-text", data) drag = QDrag(self) drag.setMimeData(mimeData) pixmap = icon.pixmap(24, 24) drag.setHotSpot(QPoint(12, 12)) drag.setPixmap(pixmap) if (drag.exec(Qt.MoveAction | Qt.CopyAction) == Qt.MoveAction): self.takeItem(self.row(item)) self.update()
def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position ).manhattanLength() < QApplication.startDragDistance(): return if self.selectedItems(): self.selected = self.selectedIndexes() if not self.selected: return drag = QDrag(self) mimedata = QMimeData() mimedata.setText( CALCULATOR_GRANDUNIT + str(self.cellWidget(self.selected[0].row(), 0).card_ids)) drag.setMimeData(mimedata) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mousePressEvent(self, event): # print('left click?') if event.button() == 1: # and self.geometry().contains(event.pos()): # print('left click!') drag = QDrag(self) mimeData = Qt.QMimeData() print('formats', mimeData.formats()) mimeData.setText('hh') drag.setMimeData(mimeData) print('formats', mimeData.formats()) #drag.setPixmap(iconPixmap) dropAction = drag.exec_() print('dragged!') print(dropAction) print(drag)
def mouseMoveEvent(self, event): if ( QLineF( QPointF(event.screenPos()), QPointF(event.buttonDownScreenPos(Qt.LeftButton)), ).length() < QApplication.startDragDistance() ): return drag = QDrag(event.widget()) mime = QMimeData() drag.setMimeData(mime) ColorItem.n += 1 if ColorItem.n > 2 and qrand() % 3 == 0: root = QFileInfo(__file__).absolutePath() image = QImage(root + "/images/head.png") mime.setImageData(image) drag.setPixmap(QPixmap.fromImage(image).scaled(30, 40)) drag.setHotSpot(QPoint(15, 30)) else: mime.setColorData(self.color) mime.setText( "#%02x%02x%02x" % (self.color.red(), self.color.green(), self.color.blue()) ) pixmap = QPixmap(34, 34) pixmap.fill(Qt.white) painter = QPainter(pixmap) painter.translate(15, 15) painter.setRenderHint(QPainter.Antialiasing) self.paint(painter, None, None) painter.end() pixmap.setMask(pixmap.createHeuristicMask()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(15, 20)) drag.exec_() self.setCursor(Qt.OpenHandCursor)
def startDrag(self, supported_actions) -> None: widget = self.itemWidget(self.selectedItems()[0]) mimeData = QMimeData() folder = os.path.basename(self.parent.current_folder) if folder == "scripts": mimeData.setData("assets/script", widget.path.encode("utf-8")) elif folder == "textures": mimeData.setData("assets/texture", widget.path.encode("utf-8")) elif folder == "sounds": mimeData.setData("assets/sound", widget.path.encode("utf-8")) else: return drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(widget.icon.pixmap()) drag.exec(Qt.MoveAction)
def doDrag(self): drag = QDrag(self) mimeData = QMimeData() mimeData.setText(self.dragText) drag.setMimeData(mimeData) drag_img = QPixmap(self.width(), self.itemRowHeight) drag_img.fill(QColor(255, 255, 255, 100)) painter = QPainter(drag_img) painter.setPen(QColor(0, 0, 0, 200)) painter.drawText(QRectF(40, 0, self.width(), self.itemRowHeight), self.dragText, QTextOption(Qt.AlignVCenter)) painter.end() drag.setPixmap(drag_img) drag.setHotSpot(self.dragPointAtItem) if drag.exec(Qt.MoveAction) == Qt.MoveAction: print('drag')
def mouseMoveEvent(self, e): if not (e.buttons() & Qt.LeftButton): return if (e.pos() - self.drag_start_position ).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() mimedata.setText(self.text()) mimedata.setImageData(self.pixmap().toImage()) drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(e.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mouseMoveEvent(self, event): """ Protected method to handle mouse move events. @param event reference to the mouse move event (QMouseEvent) """ if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \ (event.pos() - self.__dragStartPos).manhattanLength() > \ QApplication.startDragDistance(): drag = QDrag(self) mimeData = QMimeData() index = self.tabAt(event.pos()) mimeData.setText(self.tabText(index)) mimeData.setData("action", "tab-reordering") mimeData.setData("tabbar-id", str(id(self))) drag.setMimeData(mimeData) drag.exec_() E5WheelTabBar.mouseMoveEvent(self, event)
def startDrag(self, supportedActions): # 重写 startdrag()函数 listsQModelIndex = self.selectedIndexes() if listsQModelIndex: dataQMimeData = self.model().mimeData(listsQModelIndex) if not dataQMimeData: return None dragQDrag = QDrag(self) dragQDrag.setPixmap( QPixmap(QDir.currentPath() + "/if_Cursor_drag_arrow_103039.png")) # <- For put your # custom image here dragQDrag.setMimeData(dataQMimeData) defaultDropAction = QtCore.Qt.IgnoreAction if ((supportedActions & QtCore.Qt.CopyAction) and (self.dragDropMode() != QAbstractItemView.InternalMove)): defaultDropAction = QtCore.Qt.CopyAction dragQDrag.exec_(supportedActions, defaultDropAction)
def mouseMoveEvent(self, e): # место, где начинается операция перетаскивания if e.buttons() != Qt.RightButton: return # если нажата не правая кнопка, то ничего не происходит (левая кнопка резервируется для нажатия) mimeData = QMimeData( ) # Возвращает MIME-данные, заключенные в объекте перетаскивания. drag = QDrag(self) # метод Drag 'n' Drop drag.setMimeData( mimeData ) # Устанавливает в качестве данных, которые должны быть переданы,MIME-данные data. # Объект drag становится владельцем данных. drag.setHotSpot(e.pos() - self.rect().topLeft() ) # Возвращает позицию горячей точки относительно # левого-верхнего угла указателя мыши. # dropAction = drag.exec_(Qt.MoveAction) # почему когда нет этой строки не работает перетаскивание? drag.exec_( Qt.MoveAction ) # вероятно данная строчка завершает перемещения, показывает что действие завершено
def startDrag(self, supportedActions): drag = QDrag(self) si = self.selectedItems() item = si[0] ind, files = self.identify_item(item) #print(ind) #print (files) if len(ind)>1: mimedata = self.model().mimeData(self.selectedIndexes()) encoded = QByteArray() stream = QDataStream(encoded, QIODevice.WriteOnly) self.encodeData(self.selectedItems(), stream) mimedata.setData(self.customMimeType, encoded) drag.setMimeData(mimedata) drag.exec_(supportedActions)
def mouseMoveEvent(self, e): if e.buttons() != Qt.LeftButton: return mimeData = QMimeData() drag = QDrag(self) dragMimeData = QtCore.QMimeData() mime = self.name if not self.isDir: mime = mime + '.json' mime = bytes(mime, encoding='utf8') dragMimeData.setData('MimeSchemaListRow', QByteArray(mime)) drag.setMimeData(dragMimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.exec_(Qt.MoveAction)
def mousePressEvent(self, event): """ 鼠标按下事件(QWidget中是没有self.setDragEnabled(True)这个属性的。故我们重写了mousePressEvent方法) """ square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: return # 先看看鼠标点击的地方有没有我们的目标矩形,没有的话直接return,有的话返回相关的索引 location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x()/self.pieceSize(), square.y()/self.pieceSize()): self.inPlace -= 1 # 得到位置信息、拼图信息,并把它们从相关的列表中删除,当然拼图正确的总数也要减1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location # 相关的变量放入数据流中。 mimeData = QMimeData() mimeData.setData("image/x-puzzle-xdbcb8", itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) # 新建一个QDrag对象,该对象中设置mimeData,HotSpot和图片信息 if drag.exec(Qt.MoveAction) != Qt.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.pos())) if location == QPoint(square.x()/self.pieceSize(), square.y()/self.pieceSize()): self.inPlace += 1
def mouseMoveEvent(self, event): if (event.buttons() == Qt.LeftButton and (event.modifiers() == Qt.ControlModifier or event.modifiers() == Qt.ShiftModifier)): mime_data = QMimeData() mime_data.setText(PageWidget.DRAG_MAGIC) drag = QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(self.grab(self.rect())) if event.modifiers() == Qt.ControlModifier: drag.exec_(Qt.MoveAction) else: drag.exec_(Qt.CopyAction) event.accept() else: event.ignore()
def mouseMoveEvent(self, event): # 1=all the way to the right/down, 0=all the way to the left/up x_ratio = event.pos().x() / self.width() y_ratio = event.pos().y() / self.height() self.drag = QDrag(self) # https://stackoverflow.com/a/53538805/ pixmap = DragWidget(f"{self.name} (Id: {self.loadable_id})").grab() # put cursor in the same relative position on the dragwidget as # it clicked on the real Loadable widget. self.drag.setHotSpot( QPoint(pixmap.width() * x_ratio, pixmap.height() * y_ratio)) self.drag.setPixmap(pixmap) mime_data = QMimeData() data = [self.loadable_id, self.name] mime_data.setData("application/x-circleguard-loadable", bytes(json.dumps(data), "utf-8")) self.drag.setMimeData(mime_data) self.drag.exec() # start the drag
def mouseMoveEvent(self, event): # Chequear que se esté presionando el botón derecho if not (event.buttons() and Qt.LeftButton): return # Verificar que sea una posición válida if ((event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance()): return drag = QDrag(self) mime_data = QMimeData() # Establecer el contenido del widget como dato mime_data.setText(self.text()) drag.setMimeData(mime_data) # Ejecutar la acción self.drop_action = drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: index = self._findEventIndex(event) event.accept() if self._maybeDragPosition is not None: if ((event.pos() - self._maybeDragPosition).manhattanLength() < QApplication.startDragDistance()): return # TODO: needs ordering or not? glyphList = " ".join(glyph.name for glyph in self.getSelectedGlyphs()) drag = QDrag(self) mimeData = QMimeData() mimeData.setText(glyphList) drag.setMimeData(mimeData) drag.exec_() self._maybeDragPosition = None return if index == self._lastSelectedCell: return modifiers = event.modifiers() if index >= len(self._glyphs): self.scrollToCell(index) return if modifiers & Qt.ControlModifier: if index in self._selection and index in self._oldSelection: selection = self.selection selection.remove(index) self.selection = selection elif (index not in self._selection and index not in self._oldSelection): selection = self.selection selection.add(index) self.selection = selection elif modifiers & Qt.ShiftModifier: self.selection = self._linearSelection(index) else: self.selection = {index} self.lastSelectedCell = index else: super(GlyphCollectionWidget, self).mouseMoveEvent(event)
def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < \ QApplication.startDragDistance(): return if not self.ventana.estado == "pre-ronda": return drag = QDrag(self) mimedata = QMimeData() mimedata.setText(self.tipo) drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def startDrag(self, supportedActions): items = self.selectedItems() drag = QDrag(self) mimeData = self.mimeData(items) # 由于QMimeData只能设置image、urls、str、bytes等等不方便 # 这里添加一个额外的属性直接把item放进去,后面可以根据item取出数据 mimeData.setProperty('myItems', items) drag.setMimeData(mimeData) pixmap = QPixmap(self.viewport().visibleRegion().boundingRect().size()) pixmap.fill(Qt.transparent) painter = QPainter() painter.begin(pixmap) for item in items: rect = self.visualRect(self.indexFromItem(item)) painter.drawPixmap(rect, self.viewport().grab(rect)) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(self.viewport().mapFromGlobal(QCursor.pos())) drag.exec_(supportedActions)
def mousePressEvent(self, event): if event.button() == Qt.LeftButton: if self.mouse_over_tile != -1: self.drag_obj = self.mouse_over_tile if self.drag_obj != -1: drag = QDrag(self) mime_data = QMimeData() # GRUMBEL obj = SuperTuxBadGuyData() data = QByteArray(pickle.dumps(self.drag_obj)) mime_data.setData("application/x-supertux-badguy", data) drag.setMimeData(mime_data) pixmap = QPixmap.fromImage(self.brushes[self.drag_obj].get_sprite().get_pixelbuffer().get_qimage()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(self.brushes[self.drag_obj].get_sprite().width / 2, self.brushes[self.drag_obj].get_sprite().height / 2)) drag.exec() self.drag_obj = -1
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return mimeData = QMimeData() mimeData.setText(child.type) logging.debug('mousePressEvent() called: {}'.format(event.pos())) drag = QDrag(self) drag.setPixmap(child.pixmap()) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - child.pos()) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(child.pixmap())
def mouseMoveEvent(self, event): """Reimplement how to handle the widget being dragged. Change the mouse icon when the user begins dragging the object.""" drag = QDrag(self) # When the user begins dragging the object, change the cursor's icon # and set the drop action drag.setDragCursor(QPixmap("images/drag.png"), Qt.MoveAction) mime_data = QMimeData() drag.setMimeData(mime_data) # Create the QPainter object that will draw the widget being dragged pixmap = QPixmap(self.size()) # Get the size of the object painter = QPainter(pixmap) # Set the painter’s pixmap # Draw the pixmap; grab() renders the widget into a pixmap specified by rect() painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) # Set the pixmap to represent the drag action drag.setHotSpot(event.pos()) drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, event): ''' 拖动中我们所要显示的图形、鼠标样式 ''' drag = QDrag(event.widget()) mime = QMimeData() drag.setMimeData(mime) root = QFileInfo(__file__).absolutePath()#绝对路径 image = QImage(root + '/res/{}.png'.format(self.type)) mime.setImageData(image) drag.setPixmap(QPixmap.fromImage(image).scaled(50, 50)) drag.setHotSpot(QPoint(25, 25)) drag.exec_() # 设置拖动中图像以及HotSpot self.setCursor(Qt.OpenHandCursor)
def start_drag(self, info_id): # pixmap = QPixmap() # painter = QPainter( pixmap ) # painter.setFont( QFont("Arial") ); # painter.drawText( QPoint(100, 100), info_id ); mimeData = QMimeData() mimeData.data = ("/" + info_id.partition("/")[2].partition("/")[0], moose.element(info_id)) mimeData.setText(info_id) drag = QDrag(self) drag.setMimeData(mimeData) pixmap = QPixmap("") drag.setPixmap(pixmap) # drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.start(QtCore.Qt.MoveAction) print(" => ", dropAction) self.select_info.set_event_type(0) self._timer.start(0) return
def mouseMoveEvent(self, e): if e.buttons() != Qt.RightButton: return globalPos = self.mapToGlobal(e.pos()) tabBar = self.tabBar() posInTab = tabBar.mapFromGlobal(globalPos) self.indexTab = tabBar.tabAt(e.pos()) tabRect = tabBar.tabRect(self.indexTab) pixmap = QPixmap(tabRect.size()) tabBar.render(pixmap, QPoint(), QRegion(tabRect)) mimeData = QMimeData() drag = QDrag(tabBar) drag.setMimeData(mimeData) drag.setPixmap(pixmap) cursor = QCursor(Qt.OpenHandCursor) drag.setHotSpot(e.pos() - posInTab) drag.setDragCursor(cursor.pixmap(), Qt.MoveAction) drag.exec_(Qt.MoveAction)
def mousePressEvent(self, event): itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << QByteArray(self.labelText) << QPoint(event.pos() - self.rect().topLeft()) mimeData = QMimeData() mimeData.setData('application/x-fridgemagnet', itemData) mimeData.setText(self.labelText) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.setPixmap(self.pixmap()) self.hide() if drag.exec_(Qt.MoveAction | Qt.CopyAction, Qt.CopyAction) == Qt.MoveAction: self.close() else: self.show()
def mouseMoveEvent(self, e: QMouseEvent): # 왼쪽 버튼은 클릭용이므로 오른쪽 버튼 입력 허용 if e.buttons() != Qt.RightButton: return # 데이터 전송을 위한 MIME 객체 선언 # 데이터 타입, 보낼 데이터를 Bytes 형으로 저장 mime_data = QMimeData() mime_data.setData("application/hotspot", b"%d %d" % (e.x(), e.y())) drag = QDrag(self) # MIME 타입데이터를 Drag에 설정 drag.setMimeData(mime_data) # 드래그시 위젯의 모양 유지를 위해 QPixmap에 모양을 렌더링 pixmap = QPixmap(self.size()) self.render(pixmap) drag.setPixmap(pixmap) drag.setHotSpot(e.pos() - self.rect().topLeft()) drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, evt): """ Protected method to handle mouse move events. @param evt reference to the event (QMouseEvent) """ if self.__model is None: super(E5ModelToolBar, self).mouseMoveEvent(evt) return if not (evt.buttons() & Qt.LeftButton): super(E5ModelToolBar, self).mouseMoveEvent(evt) return manhattanLength = (evt.pos() - self.__dragStartPosition).manhattanLength() if manhattanLength <= QApplication.startDragDistance(): super(E5ModelToolBar, self).mouseMoveEvent(evt) return act = self.actionAt(self.__dragStartPosition) if act is None: super(E5ModelToolBar, self).mouseMoveEvent(evt) return idx = self.index(act) assert idx.isValid() drag = QDrag(self) drag.setMimeData(self.__model.mimeData([idx])) actionRect = self.actionGeometry(act) if qVersion() >= "5.0.0": drag.setPixmap(self.grab(actionRect)) else: drag.setPixmap(QPixmap.grabWidget(self, actionRect)) if drag.exec_() == Qt.MoveAction: row = idx.row() if self.__dropIndex == idx.parent() and self.__dropRow <= row: row += 1 self.__model.removeRow(row, self.__root)
def mousePressEvent(self, event): hotSpot = event.pos() mimeData = QMimeData() mimeData.setText(self.text()) mimeData.setData('application/x-hotspot', '%d %d' % (hotSpot.x(), hotSpot.y())) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(hotSpot) dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) if dropAction == Qt.MoveAction: self.close() self.update()
def mouseMoveEvent(self, event): super(CVariableAttrTree, self).mouseMoveEvent(event) if not self.m_DragPosition: return if (event.pos() - self.m_DragPosition).manhattanLength() < QApplication.startDragDistance(): return oItem = self.currentItem() drag = QDrag(self) oMimeData = basetree.CBPAttrMimeData() oMimeData.SetItemInfo(oItem.GetInfo()) drag.setMimeData(oMimeData) pixMap = QPixmap(120, 18) painter = QPainter(pixMap) image = QImage(":/icon/btn_1.png") painter.drawImage(QRectF(0, 0, 16, 16), image) drag.setPixmap(pixMap) drag.exec(Qt.MoveAction) del painter del pixMap del drag