Я работаю с приложением Qt и пытаюсь реализовать автоматизацию пользовательского интерфейса через интерфейс специальных возможностей. Это все работает хорошо, за исключением того факта, что это приложение имеет QMdiArea
который содержит QMdiSubWindow
s и все, что содержится в этих подокнах, полностью непрозрачно для интерфейса автоматизации. Я пытался проверить элементы через UIAVerify
из Windows SDK, который показывает следующее:
Эти подокна содержат стандартную сетку, которая содержит стандартные виджеты Qt. Поскольку иерархия здесь целиком состоит из стандартных виджетов Qt, а все стандартные виджеты Qt реализуют интерфейс доступности, как определено MSAA, я не понимаю, почему все элементы в области MDI скрыты, когда я могу свободно обращаться к элементам во всех других областях графического интерфейса пользователя. ,
Вероятно, причина в том, что Qt
не регистрирует свои элементы управления как действительные windows
, Все элементы управления в Qt
нарисованы на одном холсте. Это сделано для оптимизации.
такие Qt
элементы управления называются инопланетные виджеты.
Хорошая новость в том, что вы можете сделать Qt
зарегистрировать все элементы управления в Windows. документация Укажите несколько способов сделать это:
Первый — самый простой и не требует перекомпиляции программы.
Я попробовал это с UIAVerify
и получил полное дерево элементов управления MDI.