首先,我创建QListview类。然后,我将项目添加到QListview。之后,我创建QGraphicsView类。我想通过拖放将项目的图片(由QListview创建)传输到QGraphicsView。我有个问题。我无法将这些项目的图片转移到一个类到另一个类。我的代码是这样的
class PartsList(QListView):
def __init__(self, parent):
super().__init__(parent)
self.setGridSize(QSize(108, 80))
self.partsModel = LibraryModel(self)
for i in image_list:
self.partsModel.appendRow(self.__getPartItem(i))
self.setModel(self.partsModel)
self.setViewMode(self.IconMode)
self.setDragDropMode(self.DragOnly)
def __getPartItem(self, name):
part = QStandardItem()
pixmap = QPixmap(name)
part.setData(pixmap, Qt.DecorationRole)
part.setText(name)
part.setEditable(False)
return part
class LibraryModel(QStandardItemModel):
def __init__(self, parent=None):
QStandardItemModel.__init__(self, parent)
self.setColumnCount(1)
def mimeTypes(self):
return ['part/name']
def DropMimeData(self, idxs):
mimedata = QMimeData()
for idx in idxs:
if idx.isValid():
txt = self.data(idx, Qt.DisplayRole)
mimedata.setText(txt)
mimedata.setData('part/name', txt)
return mimedata
QGraphicsView视图
class SchematicView(QGraphicsView):
def __init__(self, parent):
self.scene = SchematicScene()
super().__init__(self.scene, parent)
self.setSceneRect(0, 0, 1, 1)
def dragEnterEvent(self, event):
event.accept()
def dragMoveEvent(self, event):
event.accept()
def dropEvent(self, event):
pass
没有必要创建一个新的mimetype,因为默认情况下模型已经有了一个“application/x-qabstractemmodeldatalist”,所以在本例中,我将只在QGraphicsView中创建一个虚拟模型来接收数据,从而能够在QGraphicsView中重用它。你知道吗
如果仍要继续使用另一个mimetype,则支持QListView等模型的视图中的正确选项是向mimeData添加新格式:
相关问题 更多 >
编程相关推荐