def reject(self): if self.child.isHidden(): self.child.show() redraw(self.child) self.saveDialogSettings() self.done(False)
def accept(self): if self.child.isHidden(): self.child.close() else: for key, value in self.child.taskData.items(): if self.may_change(value): le = self.findChild(QtGui.QLineEdit, "le_{0}".format(key)) le_value = le.text() if self.is_changed(self.child.taskData.get(key), le_value): self.child.taskData[key] = le_value redraw(self.child) self.saveDialogSettings() self.done(True)
def mousePressEvent_Left(self, event): child = self.childAt(event.pos()) if not child: return self.selected = child # Извлекаем отображение иконки # pixmap = QtGui.QPixmap(child.pixmap()) pixmap = QtGui.QPixmap(child.taskData.get('img')) offset = event.pos() - child.pos() itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) dataStream << QtCore.QPoint(offset) mimeData = QtCore.QMimeData() mimeData.setData('application/x-dnditemdata', itemData) # Создаём QDrag rect = child.rect() w, h = rect.width(), rect.height() pixmap = QtGui.QPixmap(w, h) pixmap.fill(QtGui.QColor(255, 255, 255, 127)) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(offset) # Выделяем иконку highlight(child) res = drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction, QtCore.Qt.MoveAction) # print res if res == QtCore.Qt.MoveAction: child.close() else: redraw(child)
def dropEvent(self, event): source = event.source() pos = event.pos() if source == self: offset = None if event.mimeData().hasFormat('application/x-dnditemdata'): itemData = event.mimeData().data('application/x-dnditemdata') dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.ReadOnly) pixmap = QtGui.QPixmap() offset = QtCore.QPoint() dataStream >> offset self.selected.taskData['pos'] = pos draw_task(self, self.selected.taskData, offset=offset) event.setDropAction(QtCore.Qt.MoveAction) event.accept() return if source == None: urls = event.mimeData().urls() if urls: sources = [i.path()[1:] for i in urls] child = self.childAt(pos) if child: child_sources = child.taskData.get('sources', []) child_sources.update(sources) redraw(child) else: task = init_task(self, sources, pos) draw_task(self, task, middle=1) event.accept() else: event.ignore() return