poltergeistvoid QMimeData::setData ( const QString & mimeType, const QByteArray & data )
ZZZ я бы всё же посоветовал не хакать по-питонски (mime.Element = self) и усложнять жизнь разработчику… можно ведь обойтись “правильным” способом переноса данных (mime.setData(mtype, data)) драг&дропом, который уже будет в себе иметь понятный интерфейс (mtype). Такой подход будет универсальным, т.е. можно будет передавать данные не только в пределах одного приложения… Этот человек пишет пример, в том числе и для того чтобы других учить, а твой пример я считаю не хорошим в этом плане:(
Т.е. мы можем передавать только QByteArray.
The gray CardinalЕсть такой принцип: KISS.
Картинку таким способом передать вроде можно, а вот как передать сам перетаскиваемый элемент, я не понял.
В данном случае просто не нужно передавать ничего другим приложениям. А если будет нужно, то уж точно не сам объект-елемент и тогда никто не мешает заполнить QMimeData ещё и нужными данными.
По-хорошему, нужно оформить это так:
class ElementMimeData(QMimeData):
def setElement(self, Element):
self.__Element = Element
def element(self):
return self.__Element
The gray CardinalА ты попробуй на нём что-нить нарисовать. :-)
Не понял. Вопрос в том, что я не пойму, что именно там за виджет сидит, в моём случае. Это не мой элемент-наследник QGraphicsPixmapItem, это не сцена, это не её QGraphicsView, и это не главное окно. Что это тогда? У меня больше никаких объектов-то нет .
The gray CardinalМнэээ… Не очень хорошо.
Кажется, осилил.
Всё-таки я согласен с Полтергейстом, что злоупотреблять этим совсем не стоит. Передать то, что нельзя нормально передавать через data, ещё ладно, а вот разтого рода x, y и прочие буквы из высшей математики, ИМХО, уже перебор. И уж тем более, рассказывать новичкам про то, что setData такой непонятный – лучше разберись с ним.
Опять же, есть такой замечательный класс – QPoint, про который лучше не забывать.
...
mime.Pos = event.pos() # Если уж так делать.
...
...
item.setPos(event.scenePos() - mime.Pos)
...