Название: Drag & Drop Отправлено: viyOld от Январь 11, 2012, 11:25 Имеем ...
Центральный widget в котором размещены QTreeView и QGraphicsView. QTreeView отображает список с иконками созданный на основе QStandardItemModel. Элементы в QTreeView перетаскиваються и дропаються как и положенно. В QGraphicsView размещена наследованная от QGraphicsScene сцена. На ней должны отображаться иконки. Из броузера иконки тянуться и дропаються на сцену нормально. Вопрос. Как правильно сделать Drag & Drop из QStandardItemModel на QGraphicsScene? Нужно ли наследоватья от QStandardItemModel и переопределять mimeData или можно организовать стандартным набором? modelListUnits->setSupportedDragActions(Qt::CopyAction|Qt::MoveAction); // где modelListUnits это QStandardItemModel void spmapscene::dropEvent(QGraphicsSceneDragDropEvent *event) { .... urlList = event->mimeData()->urls(); // returns list of QUrls if ( urlList.size() > 0) // if at least one QUrl is present in list { fName = urlList[0].toLocalFile(); // convert first QUrl to local path QGraphicsSvgItem *newItem = new QGraphicsSvgItem(fName); newItem->setFlags(QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsSelectable); addItem(newItem); } .... } Название: Re: Drag & Drop Отправлено: popper от Январь 11, 2012, 19:26 В справке Qt, раздел которой называется "Drag and Drop", приводится пример с использованием QDrag объекта. Одним из его возможностей является установка нового курсора при перетаскивании. В примере наследование идет от QWidget, поэтому советую рассмотреть вариант наследования от QTreeView.
|