История изменений
Исправление
equeim,
(текущая версия)
:
Спасибо, сработало!
В общем, глянул. Всё ещё прозаичнее. Сначала событие «нажат Enter» получает QTreeWidget, отрабатывает его activate(), создаёт диалог, выходит. Но QTreeWidget это событие не поглощает, поэтому вызывается обработчик QDialog, который нажимает на кнопку.
Можно поподробнее, каким образом событие переходит к дочернему диалогу? QAbstrackItemView после emit activated() делает event->ignore(). В документации написано, что «Clearing the accept parameter indicates that the event receiver does not want the event. Unwanted events might be propagated to the parent widget.». Но этот диалог является потомком, а не родителем. Т.е. насколько я понял, если заигнорить событие, то оно переходит к родительскому виджету, а не в обратную сторону.
И почему проблема не возникает, если корневой диалог, в котором находится QTreeWidget, заменить на QWidget?
Исходная версия
equeim,
:
Спасибо, сработало!
В общем, глянул. Всё ещё прозаичнее. Сначала событие «нажат Enter» получает QTreeWidget, отрабатывает его activate(), создаёт диалог, выходит. Но QTreeWidget это событие не поглощает, поэтому вызывается обработчик QDialog, который нажимает на кнопку.
Можно поподробнее, каким образом событие переходит к дочернему диалогу? QAbstrackItemView после emit activated() делает event->ignore(). В документации написано, что «Clearing the accept parameter indicates that the event receiver does not want the event. Unwanted events might be propagated to the parent widget.». Но этот диалог является потомком, а не родителем. И почему проблема не возникает, если корневой диалог, в котором находится QTreeWidget, заменить на QWidget?