2013-10-04 4 views
1

С сложной компоновкой, каким бы облегченным был способ получить сигнал родительскому QWidget, если у ребенка есть фокус?Как узнать, получил ли дочерний QWidget фокус

Одной из идей было бы как-то установить фильтры событий для всех дочерних QWidgets, но это кажется несколько глупым.

Не родительский QWidget действительно так или иначе знает, что у одного из его детей есть фокус?

EDIT: Нашел это, может быть, это единственный способ, то

How to change a parent widget's background when a child widget has focus?

ответ

0

Я ленивый, так что это то, что я сделал (не могу вставить код, так как он не на этой машине).

Добавлен булево моей виджет базового класса, «listenToFocusChangesFromChildren»

Тогда я изменил базовый класс focusInEvent перебрать всех родителей, и называют «childGotFocus» на любой, что есть, что логическое значение ИСТИНА.

Ленивый, но, кажется, очень эффективен.

2

Вы можете установить фильтр событий для всех необходимых Чайлдс (это нормально), или переопределить QWidget::focusInEvent для каждого ребенка, который должен быть мониторинг.

+0

Я предложил этот метод в моем вопросе. Я искал что-то другое, мне не нужны миллионы фильтров событий. – 0xbaadf00d

Смежные вопросы