Qt Drag and Drop - Изменить отображение изображения при перетаскивании

Я начал перетаскивание с изображением.

QDrag* drag = new(QDrag)(this);
drag->setPixmap(*pixmap);
drag->exec(Qt::CopyAction | Qt::MoveAction);

Я хочу изменить отображение изображения при перетаскивании. ch определенный момент в виджете.

В настоящее время у меня есть идея. Когда я начинаю первое перетаскивание, когда мое перетаскивание достигает определенной точки, я отменяю первое перетаскивание, а затем перезапускаю новое перетаскивание с новым изображением.

Я делаю это в dragMoveEvent . Я могу начать новое перетаскивание с нового изображения. Но, кажется, я не могу отменить первое перетаскивание. Я обнаружил, что предыдущее действие перетаскивания все еще выполняется.

Кто угодно может предложить:

if (event->mimeData()->hasText())
{
  if (need_to_change_pixmap())
  {
    event->setDropAction(Qt::IgnoreAction);
    change_pixmap_restart_drag();
  }
  else
  {
    event->setDropAction(Qt::MoveAction);
    event->accept();
  }
}
else
{
  event->ignore();
}

Функция change_pixmap_restart_drag просто запускает перетаскивание.

7
задан mtb 15 July 2016 в 07:46
поделиться