Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Павел_F. от Декабрь 18, 2009, 09:35



Название: Вопрос по dra&drop
Отправлено: Павел_F. от Декабрь 18, 2009, 09:35
Есть у меня виджет( назовем его родителем), на нем, в свою очередь, располагаются другие виджеты( пусть будут дети). Где-то в программе берется drag и тащится на этот виджет родитель. Если курсор находится внутри него, но над его детьми то события dragEnterEvent и dropEvent принимают эти самые дети. а хочется чтобы принимал сам родитель, не зависимо где на нем курсор и что за виджеты на нем. Как это можно реализовать?
PS: условно можно представить как таблицу и хочется что бы dragEnterEvent и dropEvent шли в саму таблицу а не в ячейку над которой курсор.


Название: Re: Вопрос по dra&drop
Отправлено: Dendy от Декабрь 18, 2009, 12:08
Дети будут принимать события, только если у них стоит setAcceptDrops(true). Если же они не должны принимать конкретно этот тип майма - то в dragEnterEvent() они не должны дёргать acceptProposedAction() - тогда событие передаётся родителю.


Название: Re: Вопрос по dra&drop
Отправлено: Павел_F. от Декабрь 18, 2009, 13:19
Ага... Сейчас попробую, спасибо.


Название: Re: Вопрос по dra&drop
Отправлено: Nimbus от Март 23, 2010, 08:41
Вопрос такой:
Есть у меня виджет, в котором находятся ещё несколько виджетов. На самом родительском виджете я переписал виртуальные методы событий перетаскивания, чтобы на него можно было перетаскивать папки и файлы. Всё гуд, даже если перетаскиваю на его дочерние виджеты, всё равно принимает и это радует. НО... Добавил в главный виджет ещё QWebView. Именно на него почему-то не срабатывает перетаскивание, на виджеты, которые находятся рядом, срабатывает. Вопрос - почему так происходит?


Название: Re: Вопрос по dra&drop
Отправлено: Akaiten от Март 23, 2010, 17:00
Потому что QWebView сам обрабатывает это событие, и оно не передаётся предку.