André de la Rocha

Qt 5.11 Brings New Accessibility Backend on Windows

Published Tuesday February 20th, 2018
6 Comments on Qt 5.11 Brings New Accessibility Backend on Windows
Posted in Accessibility, Announcements, desktop, Dev Loop, Qt, Releases, UI, Uncategorized, Windows

Accessibility technology encompasses assistive tools such as screen readers, magnifiers and braille displays, as well as APIs and frameworks that allow applications to expose elements of their UI to such tools.

While some UI widgets provided by the operating system may already be prepared to provide content and metadata to assistive tools, Qt renders UI elements itself. This approach requires a way to expose information about these elements to accessibility frameworks, which would otherwise perceive the applications as sets of empty windows.

To expose information about UI elements on Windows, Qt relied on the legacy Microsoft Active Accessibility framework (MSAA), until Qt 5.10. However, proper framework support was lacking in some areas, and nowadays MSAA has been superseded by a new framework and its use is no longer recommended for new applications.

With release 5.11 we will replace the MSAA accessibility backend with a new implementation based on the more modern Microsoft UI Automation, which superseded MSAA as the de facto standard for accessibility on the Windows platform. UI Automation has been available in all Windows releases since RTM versions of Windows 7 and Server 2008, as well as provided with system updates on Windows XP, Vista and Server 2003.

Since the accessibility changes in Qt 5.11 are internal, existing accessible applications are not expected to require any changes to utilize the improved functionality provided by UI Automation. Compatibility with MSAA-only assistive tools is maintained by bridge components built in the UI Automation framework itself.

One area where immediate improvement resulting from the new approach can be perceived is in the control of Qt-based applications using the built-in virtual keyboard in touchscreen-based Windows computers, like the Microsoft Surface line. In Qt 5.10, compatibility with some UI widgets was limited and events like the automatic showing and hiding of the virtual keyboard were not supported. With Qt 5.11, the same level of functionality available to applications based on native Windows widgets should be expected.

Also, the new UI Automation support in Qt may become useful for application testing, since it can provide metadata and programmatic control of UI elements, which can be leveraged by automated test suites and other tools.

We invite users to test the new accessibility functionality, and to give us feedback by writing to the mailing lists and reporting bugs.


Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Accessibility, Announcements, desktop, Dev Loop, Qt, Releases, UI, Uncategorized, Windows


Nick says:

Is this a MSVC-only thing, or is it also supported in the mingw builds?

André de la Rocha André de la Rocha says:

It is supported both in MSVC and MinGW builds.

HGH says:

Is there any reason why you are not supporting 64bit MinGW libs and the latest gcc – GCC 7?

julien gingras says:

Do I have to do something special to enable it?
I tried the 5.11 alpha release and the floating virtual input panel doesn’t appear when I touch qlineedit

André de la Rocha André de la Rocha says:

Hi. Thanks for reporting it. It should be enabled by default. I just tried it with the Qt 5.11 Beta1 snapshot that was released last week in a Surface Book with the physical keyboard detached and the virtual keyboard appeared when touching a QLineEdit, although it exhibited an issue I think was not there in development versions: the keyboard would be shown briefly and then disappear, requiring a second touch to be properly shown. I will investigate it and try have a fix in time for the final release. About the issue you are seeing, can you please detail the hardware and Windows release you are using, or better yet, create a bug report describing it, and, if possible, include a short self-contained project that reproduces the issue? If possible, please retest it with the beta snapshot (available through the online installer). Thanks!

Commenting closed.

Get started today with Qt Download now