def mouseMoveEvent(self, event): if not (event.buttons() & Qt.Qt.LeftButton): return if (event.pos() - self.drag_start_position ).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() row = self.indexAt(self.drag_start_position).row() collumn = self.indexAt(self.drag_start_position).column() mimedata.setText(self.item(row, collumn).text()) drag.setMimeData(mimedata) item = QLabel(self.item(row, collumn).text()) item.adjustSize() # item.setFixedSize(100,50) pixmap = QtWidgets.QWidget.grab(item) # pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(item.rect(), item.grab()) painter.end() drag.setPixmap(pixmap) # drag.setHotSpot(event.pos()) drag.setPixmap(pixmap) # shift the Pixmap so that it coincides with the cursor position # drag.setHotSpot(event.pos()) drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction)
def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return None manhattanLength = event.pos() manhattanLength -= self.drag_start_position manhattanLength = manhattanLength.manhattanLength() if manhattanLength < QApplication.startDragDistance(): return None drag = QDrag(self) mimedata = QMimeData() message = json.dumps({ "codigo": self.code, "estado": self.state, "semestre actual": self.semester }) mimedata.setText(message) drag.setMimeData(mimedata) pixmap = QPixmap(QSize(subject_width, self.height)) painter = QPainter(pixmap) painter.drawPixmap(0, 0, subject_width, self.height, self.grab()) painter.end() pixmap = pixmap.scaled(QSize(subject_width, self.height)) drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mouseMoveEvent(self, event): if self.dialog.removable: return if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() mimedata.setText(self.text()) if self.pixmap() is None: return mimedata.setImageData(self.pixmap().toImage()) drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) self.image = pixmap painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) print("Moving") drag.exec_(Qt.MoveAction)
def startDrag(self, event): """ Override startDrag method to display custom icon """ # Get first column indexes for all selected rows selected = self.selectionModel().selectedRows(0) # Get image of current item current = self.selectionModel().currentIndex() if not current.isValid() and selected: current = selected[0] if not current.isValid(): # We can't find anything to drag log.warning("No draggable items found in model!") return False # Get icon from column 0 on same row as current item icon = current.sibling(current.row(), 0).data(Qt.DecorationRole) # Start drag operation drag = QDrag(self) drag.setMimeData(self.model().mimeData(selected)) drag.setPixmap(icon.pixmap(QSize(self.drag_item_size, self.drag_item_size))) drag.setHotSpot(QPoint(self.drag_item_size / 2, self.drag_item_size / 2)) drag.exec_()
def newComponentButtonMousePress(self, componentType, event): self.ui.build.setChecked(True) self.ui.wireMode.setChecked(False) self.ui.deleteMode.setChecked(False) self.ui.selectMode.setChecked(True) self.controller.bulbsOff() self.model.reRender() self.cursorState = CursorState.NewComponentDragging self.newComponentType = componentType self.newComponentDrag = QDrag(self) self.newComponentDrag.setHotSpot( QPoint(self.ui.circuitDiagram.blockSideLength / 2, self.ui.circuitDiagram.blockSideLength / 2)) self.newComponentDrag.setMimeData(QMimeData()) self.newComponentDrag.setPixmap( QPixmap( self.ui.circuitDiagram.componentTypeToImageName( componentType)).scaled( self.ui.circuitDiagram.blockSideLength, self.ui.circuitDiagram.blockSideLength)) QApplication.setOverrideCursor(QCursor(Qt.ForbiddenCursor)) self.newComponentDrag.exec_(Qt.MoveAction) self.cursorState = CursorState.Select self.ui.selectMode.setChecked(True) self.updateCursor()
def mousePressEvent(self, event): mime = QMimeData() itemData = QByteArray() mime.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mime) drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, event): # перетягивание на левую кнопку мыши + установка минимальной длины для начала перетягивания (4 пикселя) if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < 2: global correction correction = event.pos() - self.drag_start_position drag = QDrag(self) # QMimeData() - класс для хранения данных любого типа во время перетягивания mimedata = QMimeData() mimedata.setImageData(self.pixmap().toImage()) # изображение в качестве данных, которое потом можно будет дропнуть drag.setMimeData(mimedata) t = QTransform().rotate(ui.angle) pixmap = QPixmap(ui.image_raw_main.transformed(t)) #Все исправление в 3 строчки pixmap = pixmap.scaled(self.size()) painter = QPainter(pixmap) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.setStyleSheet("background:transparent;") painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) #именно здесь происходит прорисовка изображения, работает и без QPainter, но #Но он помогает восстановить качество картинки, по сути перерисовывая новую картинку поверх старой, #повреждено из за метода scaled. Картинка из этой строчки по сути является фоном, и именно в ней и была проблема drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mouseMoveEvent(self, e): ''' Luo ratapalsata Mime tiedot, kun sitä liikuttaa ''' mimeData = QMimeData() drag = QDrag(e.widget()) drag.setMimeData(mimeData) self.scene.valittu = self dropAction = drag.exec_(Qt.MoveAction)
def _start_drag(self, action): drag = QDrag(self) drag.setPixmap(QPixmap(":/image/Folder.png")) indexes = self.ui.dirTree.selectionModel().selectedRows() mime_data = self.ui.dirTree.model().mimeData(indexes) drag.setMimeData(mime_data) if mime_data.hasFormat(MimeTypes[real_folder]): drag.exec_(Qt.CopyAction) elif mime_data.hasFormat(MimeTypes[virtual_folder]): drag.exec_(Qt.MoveAction)
def mousePressEvent(self, me): if me.button() == Qt.LeftButton: child = self.find_label() if child != None: mime_data = QMimeData() mime_data.setData('text/plain', child.get_text()) drag = QDrag(self) drag.setMimeData(mime_data) #drag.setHotSpot(child.pos()) drag_action = drag.exec_(Qt.CopyAction | Qt.MoveAction)
def mousePressEvent(self, e): drag = QDrag(self) drag.setPixmap(self.pixmap()) mimeData = QMimeData() mimeData.setText(self.block.block.TYPE) drag.setMimeData(mimeData) drag.setHotSpot(e.pos()) drag.exec()
def newComponentButtonMousePress(self, componentType, event): self.tool = Tool.NewComponent self.mouseState = MouseState.Dragging self.newComponentType = componentType newComponentDrag = QDrag(self.view) newComponentDrag.setHotSpot(QPoint(self.view.ui.circuitDiagram.blockSideLength / 2, self.view.ui.circuitDiagram.blockSideLength / 2)) newComponentDrag.setMimeData(QMimeData()) newComponentDrag.setPixmap(QPixmap(self.view.ui.circuitDiagram.componentTypeToImageName(componentType)).scaled(self.view.ui.circuitDiagram.blockSideLength, self.view.ui.circuitDiagram.blockSideLength)) newComponentDrag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, event): if not self.movible: return # Drag and Drop drag = QDrag(self) mimedata = QMimeData() drag.setMimeData(mimedata) drag.setPixmap(self.grab()) drag.setHotSpot(event.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def startDrag(self, DropActions): """ 开始拖 """ item = self.currentItem() # 表示一个小拼图 itemData = QByteArray() # QByteArray类提供了一个字节数组 dataStream = QDataStream(itemData, QIODevice.WriteOnly) # QDataStream类提供二进制数据到QIODevice的序列化 piecePix = item.data(Qt.UserRole) pieceLocation = item.data(Qt.UserRole+1) # 返回给定角色的项目数据,这里分别是拼图本身和拼图的位置。 # 这里的Qt.UserRole是特定于应用程序目的的角色。 dataStream << piecePix << pieceLocation # 将拼图数据和拼图位置信息存入数据流中,注意:这里的操作符<< mimeData = QMimeData() mimeData.setData("image/x-puzzle-xdbcb8", itemData) # 构造一个没有数据的新MIME数据对象 drag = QDrag(self) drag.setMimeData(mimeData) # QDrag类支持基于MIME的拖放数据传输 drag.setHotSpot(QPoint(piecePix.width()/2, piecePix.height()/2)) # 光标的热点指向其底边的中心 drag.setPixmap(piecePix) # 拖得时候显示的图片 if drag.exec(Qt.MoveAction) == Qt.MoveAction: moveItem = self.takeItem(self.row(item)) del moveItem
def mouseMoveEvent(self, event): if self.tab_rect: self.tab_rect.moveTopLeft(event.pos()) if event.buttons( ) == Qt.LeftButton and self.pressEvent and not self.bar_rect.contains( self.tab_rect): event.accept() index = self.currentIndex() mimeData = QMimeData() drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(self.pixmap) drag.setHotSpot(self.tab_rect.topLeft() - event.pos()) DetachableTabWidget.drag_widget = self.parent.widget(index) DetachableTabWidget.drag_text = self.tabText(index) self.parent.removeTab(index) dropAction = drag.exec_(Qt.MoveAction | Qt.TargetMoveAction | Qt.IgnoreAction) self.parent.dragLeaveEvent(event) if dropAction == 0: self.parent.insertTab(index, DetachableTabWidget.drag_widget, DetachableTabWidget.drag_text) self.parent.setCurrentIndex(index) else: QTabBar.mouseMoveEvent(self, event)
def mousePressEvent(self, event): if event.buttons() != Qt.LeftButton: return icon = QLabel() mimeData = QMimeData() mime_text = str(self.row) + str(self.column) + str( self.__class__.__name__) mimeData.setText(mime_text) pixmap = QPixmap('images/ExecOp.png').scaled(120, 60) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(self.pixmap) drag.setHotSpot(event.pos() - self.rect().topLeft()) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: icon.close() else: icon.show() icon.setPixmap(self.pixmap)
def mousePressEvent(self, event): from widgets.columneditor import ColumnEditor from widgets.sectioneditor import SectionEditor if self.mode != Mode.ENABLED or event.button() != Qt.LeftButton: return if self.parentWidget().layout.count() == 1: self.elementDragged.emit() mimeData = WidgetMimeData() mimeData.setData(self) parent = self.parentWidget() if isinstance(parent, ColumnEditor): mimeData.source_list = parent.column._items elif isinstance(parent, SectionEditor): mimeData.source_list = parent.section._items pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos()) drag.setPixmap(pixmap) self.hide() if drag.exec(Qt.MoveAction) == Qt.IgnoreAction: self.show()
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << QPoint(event.pos() - child.pos()) mimeData = QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def mousePressEvent(self, event): # handle an internal move # start a drag event if event.button() == Qt.LeftButton and self.dragDropRect().contains( event.pos()): # create the pixmap pixmap = QPixmap.grabWidget(self, self.rect()) # create the mimedata mimeData = QMimeData() mimeData.setText('ItemTitle::%s' % (self.title())) # create the drag drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) if not drag.exec_(): self._accordianWidget.emitItemDragFailed(self) event.accept() # determine if the expand/collapse should occur elif event.button() == Qt.LeftButton and self.expandCollapseRect( ).contains(event.pos()): self._clicked = True event.accept() else: event.ignore()
def mousePressEvent(self, event): child = self.childAt(event.pos()) if child is None: return hotSpot = event.pos() - child.pos() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream.writeQString(child.labelText()) dataStream << hotSpot mimeData = QMimeData() mimeData.setData(fridgeMagnetsMimeType(), itemData) mimeData.setText(child.labelText()) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(child.pixmap()) drag.setHotSpot(hotSpot) child.hide() if drag.exec(Qt.MoveAction | Qt.CopyAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show()
def drag(self, parent, mimeData): """Called by dragFile and dragData. Execs a QDrag on the mime data.""" d = QDrag(parent) d.setMimeData(mimeData) d.setPixmap(self.pixmap()) d.setHotSpot(QPoint(-10, -10)) return d.exec_(Qt.CopyAction)
def mousePressEvent(self, event): mimeData = WidgetMimeData() mimeData.setSize(self.size().width(), self.size().height()) mimeData.setData(self) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos()) drag.setPixmap(pixmap) pe = self.parentWidget() pe.removeSectionEditor(self) pe.enableColumnAcceptDrop(False) pe.enableSectionAcceptDrop(False) self.hide() if drag.exec(Qt.MoveAction) == Qt.IgnoreAction: pe.addSection(self) self.show() pe.enableColumnAcceptDrop(True) pe.enableSectionAcceptDrop(True)
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) mimeData = QMimeData() mimeData.setText(child.type) drag = QDrag(self) drag.setPixmap(child.pixmap()) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def mousePressEvent(self, event): logging.debug('ElementMaster::mousePressEvent() called') # uncomment this for debugging purpose #self.listChild() if event.buttons() != Qt.LeftButton: return icon = QLabel() mimeData = QMimeData() mime_text = str(self.row) + str(self.column) + str(self.__class__.__name__) mimeData.setText(mime_text) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(self.pixmap) drag.setHotSpot(event.pos() - self.rect().topLeft()) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: icon.close() else: icon.show() icon.setPixmap(self.pixmap)
def mousePressEvent(self, event): logging.debug('DropBox::mousePressEvent() called: {}'.format( event.pos())) try: mimeData = QMimeData() mimeData.setText(self.type) # load config into memory tmp_config of storabar self.parent.tmp_config = self.config self.parent.tmp_element = self # push config to active workingarea self.parent.loadConfig() except Exception as e: logging.error( 'DropBox::mousePressEvent() Exception caught: {}'.format( str(e))) return drag = QDrag(self) drag.setHotSpot(event.pos()) drag.setPixmap(self.label.pixmap()) drag.setMimeData(mimeData) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: self.close() else: self.show() self.label.setPixmap(self.label.pixmap()) logging.debug('DropBox::mousePressEvent() dropped')
def mousePressEvent(self, event): from widgets.sectioneditor import SectionEditor mimeData = WidgetMimeData() mimeData.setSize(self.size().width(), self.size().height()) mimeData.setData(self) parent = self.parentWidget() if isinstance(parent, SectionEditor): mimeData.source_list = parent.section._items pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos()) drag.setPixmap(pixmap) se = self.parentWidget() se.removeRowEditor(self) pe = se.parentWidget() pe.enableColumnAcceptDrop(False) self.hide() if drag.exec(Qt.MoveAction) == Qt.IgnoreAction: se.addRowEditor(self) self.show() pe.enableColumnAcceptDrop(True)
def mouseMoveEvent(self, e): modifiers = QApplication.keyboardModifiers() if modifiers == Qt.ControlModifier: mimeData = QMimeData() drag = QDrag(e.widget()) mimeData.setText("node") drag.setMimeData(mimeData) drag.exec_(Qt.MoveAction) self.ungrabMouse() if self.edgeInConstruction != None: self.edgeInConstruction.obsUpdate(e.scenePos())
def mouseMoveEvent(self, e): if self.habil: mimeData = QMimeData() mimeData.setText(f'{self.tipo},{self.pixmap().width()},' +f'{self.pixmap().height()}') drag = QDrag(self) if self.pixmap(): drag.setPixmap(self.pixmap()) drag.setMimeData(mimeData) drag.setHotSpot(e.pos()) drag.exec_(Qt.MoveAction)
def drag(self, widget): self.scene().removeItem(self) self.isTaken = False drag = QDrag(widget) mime = QMimeData() mime.setProperty('node', self.data) drag.setMimeData(mime) pixmap = self.drawPixmap() drag.setPixmap(pixmap) drag.setHotSpot(QPoint(self.radius, self.radius)) drag.exec()
def on_verticalLineButton_pressed(self): mime_data = QMimeData() mime_data.setData('application/x-vertical-line', b'vertical line') mime_data.setText(self.verticalLineButton.text()) drag = QDrag(self.verticalLineButton) drag.setMimeData(mime_data) pixmap = QPixmap( pkg_resources.resource_filename('wiggle.app.panosphere.images', 'VerticalLine32.png')) drag.setHotSpot(QPoint(16, 4)) drag.setPixmap(pixmap) drag.exec(Qt.CopyAction)
def mouseMoveEvent(self, e): """ Handles the snippet capture and drag drop initialization based off of: http://stackoverflow.com/questions/28258050/drag-n-drop-button-and-drop-down-menu-pyqt-qt-designer Parameters ---------- e : qt event Returns ------- None """ if e.buttons() != Qt.LeftButton: if hasattr(self, 'drag_start_pos'): delattr(self, 'drag_start_pos') if not hasattr(self, 'drag_start_pos'): return if not (e.pos() - self.drag_start_pos).manhattanLength() > 75: return modifiers = QApplication.keyboardModifiers() if not modifiers == Qt.ControlModifier: return mime_data = self.get_mime() # let's make it fancy. we'll show a "ghost" of the button as we drag # grab the button to a pixmap pixmap = self.grab() size = pixmap.size() * .65 half_pixmap = pixmap.scaled(size, Qt.KeepAspectRatio, transformMode=Qt.SmoothTransformation) # below makes the pixmap half transparent painter = QPainter(half_pixmap) painter.setCompositionMode(painter.CompositionMode_DestinationAtop) painter.fillRect(half_pixmap.rect(), QColor(0, 0, 0, 127)) font = QFont() font.setFamily('Arial') font.setPointSize(15) font.setBold(True) painter.setFont(font) painter.setPen(Qt.red) painter.drawText(half_pixmap.rect(), Qt.AlignCenter, self.drag_label) painter.end() drag = QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(half_pixmap) drag.setHotSpot(e.pos()) # dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction) # dropAction = drag.exec_(Qt.TargetMoveAction) dropAction = drag.exec_() e.ignore()
def mouseMoveEvent(self, event): if event.buttons( ) & Qt.LeftButton and self.target is not None and self.target in self.lineup: drag = QDrag(self.ly_players.itemAt(self.target)) pix = self.ly_players.itemAt(self.target).itemAt(0).widget().grab() mimedata = QMimeData() mimedata.setImageData(pix) drag.setMimeData(mimedata) drag.setPixmap(pix) to_middle = (pix.height() // 2) drag.setHotSpot(QPoint(to_middle, to_middle)) drag.exec_()
def mouseMoveEvent(self, e): if e.buttons() != Qt.RightButton: return mimeData = QMimeData() drag = QDrag(self) srag.setMimeData(mimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, event): if (event.buttons() & Qt.LeftButton and self._dragstartpos is not None and (event.pos() - self._dragstartpos).manhattanLength() >= QApplication.startDragDistance()): column = self.logicalIndexAt(self._dragstartpos) data = [column, self.model().headerData(column, Qt.Horizontal)] self._dragstartpos = None drag = QDrag(self) drag.setMimeData(self.encodeMimeData([data])) action = drag.exec(Qt.MoveAction) if action != Qt.IgnoreAction: self.setColumnHidden(column, True)
def mouseMoveEvent(self, event): if not event.buttons() and Qt.LeftButton: return distance = (event.pos() - self.start_mouse_drag).manhattanLength() if distance < QApplication.startDragDistance(): return item = self.selectedItems()[0] text = "<row>" + str(item.row()) + "<row>" + "<col>" + str(item.column()) + "<col>" + "<text>" + str(item.text()) + "<text>" print(text) drag = QDrag(self) mim_data = QMimeData() mim_data.setText(text) drag.setMimeData(mim_data) dropAction = drag.exec_(Qt.MoveAction)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: index = self._findEventIndex(event) 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 event.accept() return if index == self._lastSelectedCell: return modifiers = event.modifiers() event.accept() if index is None: if not (modifiers & Qt.ControlModifier or modifiers & Qt.ShiftModifier): self.selection = set() self._lastSelectedCell = 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: newSelection = self._linearSelection(index) if newSelection is not None: self.selection = newSelection else: self.selection = {index} self.lastSelectedCell = index else: super(GlyphCollectionWidget, self).mouseMoveEvent(event)
def mouseMoveEvent(self, event): super().mouseMoveEvent(event) if ( event.buttons() == Qt.LeftButton and self.left_start is not None and (event.globalPos() - self.left_start).manhattanLength() >= QApplication.startDragDistance() ): self.drag_start.emit() mime = QMimeData() drag = QDrag(self) drag.setMimeData(mime) self.left_start = None drag.exec_(Qt.MoveAction) self.drag_stop.emit()
def maybeExecuteDrag(self, event): if self._maybeDragPosition is None: return False if (event.localPos() - self._maybeDragPosition).manhattanLength() \ < QApplication.startDragDistance(): return False drag = QDrag(self) glyphs = self.glyphsForIndexes(self.selection()) mimeData = GlyphsMimeData() mimeData.setGlyphs(glyphs) drag.setMimeData(mimeData) drag.exec_() self._maybeDragPosition = None return True
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", b"tab-reordering") mimeData.setData("tabbar-id", str(id(self)).encode("utf-8")) mimeData.setData( "source-index", QByteArray.number(self.tabAt(self.__dragStartPos))) mimeData.setData( "tabwidget-id", str(id(self.parentWidget())).encode("utf-8")) drag.setMimeData(mimeData) if event.modifiers() == Qt.KeyboardModifiers(Qt.ShiftModifier): drag.exec_(Qt.DropActions(Qt.CopyAction)) elif event.modifiers() == Qt.KeyboardModifiers(Qt.NoModifier): drag.exec_(Qt.DropActions(Qt.MoveAction)) super(TabBar, self).mouseMoveEvent(event)
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): self.mimeData = MimeData() self.mimeData.dataRequested.connect(self.createData, Qt.DirectConnection) drag = QDrag(self) drag.setMimeData(self.mimeData) drag.setPixmap(QPixmap(':/images/drag.png')) drag.exec_(Qt.CopyAction)
def mouseMoveEvent(self, evt): """ Protected method to handle mouse move events. @param evt reference to the event (QMouseEvent) """ if self.__model is None: super(E5ModelMenu, self).mouseMoveEvent(evt) return if not (evt.buttons() & Qt.LeftButton): super(E5ModelMenu, self).mouseMoveEvent(evt) return manhattanLength = (evt.pos() - self.__dragStartPosition).manhattanLength() if manhattanLength <= QApplication.startDragDistance(): super(E5ModelMenu, self).mouseMoveEvent(evt) return act = self.actionAt(self.__dragStartPosition) if act is None: super(E5ModelMenu, self).mouseMoveEvent(evt) return idx = self.index(act) if not idx.isValid(): super(E5ModelMenu, self).mouseMoveEvent(evt) return 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) if not self.isAncestorOf(drag.target()): self.close() else: self.aboutToShow.emit()
def startDrag(self, mainwin, ev): d = mainwin.currentDocument() if not d: return url = d.url() if url.isEmpty(): return drag = QDrag(mainwin) data = QMimeData() data.setUrls([url]) drag.setMimeData(data) pixmap = mainwin.style().standardPixmap(QStyle.SP_FileIcon, 0, mainwin) hotspot = QPoint(pixmap.width() - 5, 5) drag.setPixmap(pixmap) drag.setHotSpot(hotspot) drag.start(Qt.LinkAction | Qt.CopyAction)
def mouseMoveEvent(self, event): # if the left mouse button is used if self.drag_started: data = QByteArray() mime_data = QMimeData() mime_data.setData(self.mimetext, data) drag = QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(self.icon.get_icon()) drag.setHotSpot(self.rect().topLeft()) # where do we drag from if drag.exec_(Qt.MoveAction): self.parent().icons.remove(self) self.deleteLater()
def startDrag(self): image = self.image() data = QMimeData() data.setImageData(image) drag = QDrag(self) drag.setMimeData(data) if max(image.width(), image.height()) > 256: image = image.scaled(QSize(256, 256), Qt.KeepAspectRatio, Qt.SmoothTransformation) p = QPainter() p.begin(image) p.setCompositionMode(QPainter.CompositionMode_DestinationIn) p.fillRect(image.rect(), QColor(0, 0, 0, 160)) p.end() pixmap = QPixmap.fromImage(image) drag.setPixmap(pixmap) drag.setHotSpot(pixmap.rect().center()) drag.exec_(Qt.CopyAction)
def __dragSnapshot(self): """ Private slot handling the dragging of the preview picture. """ drag = QDrag(self) mimeData = QMimeData() mimeData.setImageData(self.__snapshot) drag.setMimeData(mimeData) drag.setPixmap(self.preview.pixmap()) drag.exec_(Qt.CopyAction)
def dragFile(widget, filename, icon=None, dropactions=Qt.CopyAction): """Starts dragging the given local file from the widget.""" if icon is None or icon.isNull(): icon = QFileIconProvider().icon(QFileInfo(filename)) drag = QDrag(widget) data = QMimeData() data.setUrls([QUrl.fromLocalFile(filename)]) drag.setMimeData(data) drag.setPixmap(icon.pixmap(32)) drag.exec_(dropactions)
def mouseMoveEvent(self, e): if e.buttons() != Qt.RightButton: return mimeData = QMimeData() drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.exec_(Qt.MoveAction)
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 mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.drag_started.emit(self.mapToParent(event.pos())) drag = QDrag(self) mimeData = QMimeData() mimeData.setText("Move Signal") pixmap = QPixmap(self.rect().size()) self.render(pixmap, QPoint(), QRegion(self.rect())) drag.setPixmap(pixmap) drag.setMimeData(mimeData) drag.exec_()
def mouseMoveEvent(self, mouseEvent): """ Executed when the mouse if moved while a button is being pressed. :type mouseEvent: QMouseEvent """ if mouseEvent.buttons() & Qt.LeftButton: # Exclude edges from drag&drop since we need to source and edge to insert it in the diagram. if Item.ConceptNode <= self.item <= Item.PropertyAssertionNode: distance = (mouseEvent.pos() - self.startPos).manhattanLength() if distance >= QApplication.startDragDistance(): mimeData = QMimeData() mimeData.setText(str(self.item.value)) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(self.pixmap) drag.setHotSpot(self.startPos - self.rect().topLeft()) drag.exec_(Qt.CopyAction) super().mouseMoveEvent(mouseEvent)
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 startDrag(self, supportedActions): item = self.currentItem() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) pixmap = QPixmap(item.data(Qt.UserRole)) location = item.data(Qt.UserRole+1) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) == Qt.MoveAction: if self.currentItem() is not None: self.takeItem(self.row(item))
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 mousePressEvent(self, event): square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: 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() / 80, square.y() / 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) 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() / 80, square.y() / 80): self.inPlace += 1
def newComponentButtonMousePress(self, componentType, event): self.ui.build.setChecked(True) self.ui.wireMode.setChecked(False) self.ui.deleteMode.setChecked(False) self.ui.selectMode.setChecked(True) self.controller.bulbsOff() self.model.reRender() self.cursorState = CursorState.NewComponentDragging self.newComponentType = componentType self.newComponentDrag = QDrag(self) self.newComponentDrag.setHotSpot(QPoint(self.ui.circuitDiagram.blockSideLength / 2, self.ui.circuitDiagram.blockSideLength / 2)) self.newComponentDrag.setMimeData(QMimeData()) self.newComponentDrag.setPixmap(QPixmap(self.ui.circuitDiagram.componentTypeToImageName(componentType)).scaled(self.ui.circuitDiagram.blockSideLength, self.ui.circuitDiagram.blockSideLength)) QApplication.setOverrideCursor(QCursor(Qt.ForbiddenCursor)) self.newComponentDrag.exec_(Qt.MoveAction) self.cursorState = CursorState.Select self.ui.selectMode.setChecked(True) self.updateCursor()
def mouseMoveEvent(self, event): if self.parent() is not self.parent().src_dragwidget: for item in self.parent().src_selected: item.icon.deselect_icon() self.parent().clear_dnd() # if self.drag_started: data = QByteArray() mime_data = QMimeData() mime_data.setData(self.mimetext, data) drag = QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(self.icon.get_icon()) drag.setHotSpot(self.rect().topLeft()) if drag.exec_(Qt.MoveAction): if len(self.parent().src_selected) > 0: for item in self.parent().src_selected: self.parent().icons.remove(item) item.deleteLater() else: self.parent().icons.remove(self) self.deleteLater() self.parent().clear_dnd()
def mouseMoveEvent(self, e): # 右ボタンのときのみDnD有効 if e.buttons() != Qt.RightButton: return # MIMEベースでDnD情報を転送する mimeData = QMimeData() drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) # PyQt4ではdrag.start()だった dropAction = drag.exec_(Qt.MoveAction)