Russian Qt Forum
Ноябрь 23, 2024, 19:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Drag & Drop  (Прочитано 2452 раз)
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);
       }
....
}
Записан
popper
Гость
« Ответ #1 : Январь 11, 2012, 19:26 »

В справке Qt, раздел которой называется "Drag and Drop", приводится пример с использованием QDrag объекта. Одним из его возможностей является  установка нового курсора при перетаскивании. В примере наследование идет от QWidget, поэтому советую рассмотреть вариант наследования от QTreeView.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 21.