Название: разное поведение drag&drop в win и lin Отправлено: unkier от Апрель 26, 2010, 20:40 в линуксе всё пашет.
сначало Qt::DropAction dropAction = drag->exec(Qt::MoveAction); патом на принимающей стороне внутри dropEvent если всё ок то event->acceptProposedAction(); (и тогда drag->exec возвращает нужный dropaction) или event->ignore(); (и тогда drag->exec возвращает Qt::IgnoreAction) собрал под виндой и косяк. тот же код работает по другому. drag->exec никогда не возвращает IgnoreAction и получается что дроп на все итемы работает :( в чём я не прав ? Название: Re: разное поведение drag&drop в win и lin Отправлено: SABROG от Апрель 26, 2010, 21:12 Выкладывай минимальный компилируемый пример с ошибкой, будем смотреть.
Название: Re: разное поведение drag&drop в win и lin Отправлено: unkier от Апрель 28, 2010, 19:44 вот пример. в винде проверил. поведение всё тоже. всегда дропается, даже когда евент игнорится.
Название: Re: разное поведение drag&drop в win и lin Отправлено: SABROG от Апрель 29, 2010, 00:11 Смотри чего получается. У тебя есть 2 возможности проигнорить перетаскивание итема. Первая это пока мышь зажата и ты таскаешь по виджету итем. Если в этом эвенте ты будешь делать проверку, так например:
Код: void QDropTreeWidget::dragEnterEvent(QDragEnterEvent *event) То курсор смениться на знак "стоп", при отпускании мышки ты будешь получать свой Qt::IgnoreAction, так как acceptProposedAction() не вызывался. Второй вариант это делать проверку в момент отпускания мыши. Код: void QDropTreeWidget::dragEnterEvent(QDragEnterEvent *event) Затем Код: void QDropTreeWidget::dragMoveEvent(QDragMoveEvent *event) И вот ключевой момент Код: void QDropTreeWidget::dropEvent(QDropEvent *event) Код: void QDragListWidget::mouseMoveEvent(QMouseEvent *event) P.S.: форматирование не ставил, так как русские комментария коцаются. Название: Re: разное поведение drag&drop в win и lin Отправлено: unkier от Апрель 29, 2010, 20:11 спасибо огромное. сразу в точку.
|