1

Здравствуйте!

Неожиданное явление в программе на Qt - в главной программе
установлен фильтр, но дочернее окон всё равно перехватывает
события и отобрать от него фокус не удаётся. Это в AStra Linux 1.4.

К сожалению, я столкнулся с неожиданным поведением системы
или программы. Именно, в программе создаётся производный
класс от QFrame, ему приписываются флаги, что он окно,
что у него нет рамки, что он прозрачный, а также
устанавливается атрибут, что он не получает фокус.
Это делается и при его создании и внутри него самого.
Но похоже, что последний атрибут не срабатывает.
В главной программе также делаются попытки лишить этот
объект фокуса и перевести его на себя, в ней установлен
фильтр командой installEventFilter(), но, когда этот объект
делается видимым командой show(), он захватывает все события
от клавиатуры, а фильтр, установленный в главной программе,
не получает ничего. Т.е. если создать в нём свою Event(),
то видно, что события получает она.

Хотелось бы знать, это нормальное поведение или нет?
Если нет, то что я упустил?

Это не критично, т.к. я собирался посылать эти события дочерней
программе из главной, а раз она сама их принимает, то это даже
удобнее, но это в моём случае, а вообще это нежелательно.
В книге я видел, как можно посылать события разным виджетам,
но не помню, годится это для моего случая или нет.

Пётр.

Пётр.

2

Похоже, я нашёл в книге, как достигается желаемое,
попробую уже в понедельник.
Надо этот фильтр установить для всех объектов, сообщения
для которых надо получать. Также их советуют обрабатывать
в функции eventFilter(), но я не уверен, что это обязательно.

Пётр.

Пётр.