Лучший способ иметь дело с дочерними для родительских событий мыши и клавиатуры в графическом интерфейсе? - PullRequest
1 голос
/ 10 апреля 2011

Для моего графического интерфейса я хочу использовать следующую систему: способ, которым она работает, заключается в том, что если виджет под мышью не использует событие мыши или kb, он передается родителю этого виджета до тех пор, пока он не будет использован или рабочий столдостигнуто.

Просто одна вещь меня озадачивает.Означает ли это, что по какой-то причине у кнопки есть метка в качестве одного из ее дочерних элементов?Если я щелкну метку, это не будет означать, что моя кнопка, которая находится под меткой, будет щелкать (поскольку метка не использует мышь), что в данном случае нежелательно.Означает ли это, что я должен был бы сделать, если (mouseEvent.source == this) {do button stuff}?

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 апреля 2011

Если метка является дочерним виджетом, то да, метка попытается съесть событие, потерпит неудачу (как правило, метка не имеет метода-обработчика) и, таким образом, передаст событие обратно кнопке.

Скорее всего, самый простой способ сделать это - извлечь подкласс класса Label и переопределить функцию handle (при условии, что это возможно в вашем наборе инструментов - что должно быть в любом приличном наборе инструментов).Затем вы можете использовать функцию дескриптора для захвата щелчков мыши и передачи любого другого события обратно кнопке.

Сравнение указателей, вероятно, является плохой идеей и слегка зависит от способа реализации инструментария - например,, он может считать источник кнопкой (потому что это то, что он ожидает), а не меткой.

Хотя я нахожу весьма странным, что метка является виджетом сама по себе .....

0 голосов
/ 10 апреля 2011

Похоже, вам нужен специальный вид "Метка", который потребляет события мыши. Вы должны иметь возможность создать настраиваемый виджет (производный от Label), который использует события мыши для этого конкретного случая.

Если этот виджет «Метка» принадлежит третьему лицу, которое не может быть получено / разделено на подклассы, вам следует заключить Метку в другой виджет: простой виджет, который использует события мыши и имеет только одного дочернего элемента, оригинальную метку.

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