Qt - Как сделать, чтобы действие удаления было копированием, когда местом удаления является какое-то другое приложение - PullRequest
3 голосов
/ 01 марта 2012

У меня есть подкласс QMimeData, и перетаскивание отлично работает в моем виджете - и для copyAction, и для MoveAction данные копируются и перемещаются по мере необходимости (на основании клавиш shift / ctrl и т. Д.)

Для совместимости, которую я поддерживаюдругие простые форматы, такие как text / plain - главная проблема в том, что я не могу разрешить операцию «переместить» для сбрасываний в другие приложения для этих совместимых форматов.

Например, я разрешаю удаление моих данных из моеговиджет для некоторого текстового поля - но только до тех пор, пока это «copyAction».Но я не вижу никакого способа заставить это.

Вопрос: Как заставить действие сброса быть «действием копирования» для всех внешних виджетов, в то же время разрешая копирование / перемещение в моем виджете ?????

Под «силой» подразумевается независимо от того, что выберет пользователь (ctrl, shift или что-то еще) - мои данные всегда должны «копироваться», а не «перемещаться», когда перетаскивание происходит для совместимых форматов.(хотя он должен позволять копировать и перемещать для своего собственного формата)

Как применить это в Qt?

1 Ответ

1 голос
/ 18 апреля 2013

Кажется, это ограничение в Qt. Этот пост описывает проблему и показывает, что проблема в QAbstractItemView :: startDrag ().По сути, Qt не позволяет напрямую перетаскивать их как внутрь одного и того же виджета, так и во внешнее приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...