Так вот моя проблема. Я приложил изображение того, с чем я работаю, чтобы дать вам некоторое представление о том, что я делаю. У меня есть список значков внизу. У меня есть QGraphicsView над ним (с линией, проходящей через него).
http://oi43.tinypic.com/2uhx1xj.jpg (очевидно, я пока не могу публиковать изображения, потому что я новичок)
Пока я могу перетащить значок из нижнего списка в QGraphicsView. Тем не менее, изображение, которое было добавлено в QGraphicsView, является всего лишь одним изображением по умолчанию, которое я определил как значок "blender". (Код ниже - это то, что я работаю с 1 изображением по умолчанию).
#Defined in QGraphicScene
def dropEvent(self, event):
event.accept()
item = QGraphicsPixmapItem(QPixmap("images/{}".format("blender")))
item.setFlags(QGraphicsItem.ItemIsSelectable|
QGraphicsItem.ItemIsMovable)
position = QPointF(event.scenePos())
print(position)
item.setPos(position)
self.addItem(item)
То, что я ХОЧУ, это изображение, которое помещается в QGraphicsView, чтобы быть тем же изображением, что и в QListWidget. Например, если «Mozilla» перетаскивают в QGraphicsView, я хочу, чтобы отображался значок Mozilla, и т. Д. Я думаю, что если я каким-то образом смогу передать текстовое имя из QListWidget в QGraphicsView, я мог бы просто заменить » блендер "с любой переменной.
То, что я должен сделать, - это переопределить функцию «startDrag ()» для моего QListWidget, а затем в моем QGraphicsScene мне нужно реализовать свой dropEvent () для обработки этих данных. Я просмотрел QMimeData & QDataStream, но не совсем ясно. Я думаю, это выглядит примерно так:
#startDrag() that is reimplemented for the listWidget1 function. listWidget1 is the list in the first tab
def scene_startDrag(self, dropActions):
item = self.listWidget1.selectedItems()
data = QByteArray()
stream = QDataStream(data, QIODevice.WriteOnly)
stream.writeQString(item.text())
mimeData = QMimeData()
mimeData.setData("application/x-img", data)
drag = QDrag(self)
drag.setMimeData(mimeData)
Если это поможет, у меня все эти значки в listWidget1 хранятся в словаре, называемом «узлы», ключом которого является любое имя, отображаемое в списке. Таким образом, в listWidget1 ключ Mozilla - просто «mozilla».
Проще говоря, все, что я хочу сделать, - это получить правильное изображение для отображения в QGraphicsView. Простите за длинный пост. У кого-нибудь есть идеи о том, как я могу это реализовать? Спасибо за любой вклад!