Qt 5 Accessibility APIs

Qt 5 is a very gradual and smooth update from Qt 4. There are generally no breaks in source compatibility, except where we felt that it's absolutely necessary.
One area where we actually decided to do major changes that will affect people porting to Qt 5 is accessibility.
The reason is that we were really hindered in improving and modernizing Qt's accessibility implementations on all platforms by the old state of the API.

For the moment we marked all accessibility APIs as internal. That means they are "hidden" and won't show up in the documentation. This is because of the big changes where we are not quite sure that the new APIs have been tested enough. We feel that the Qt 5.1 release is the right time. But we have all enablers in place so that anyone willing to test should be good to go without any special setup. This means that while for the time being it's undocumented you can expect it to work much better than in Qt 4 already.

The work on the new linux accessibility bridge with the help of users giving feedback showed us the limitations that we now tried to address as much as possible. The orginal API was inspired by MSAA which is the accessibility API that Windows 95 supported.
As you may guess, since then the world moved on and much happened in order to enable developers to support users better and of course enable users to make the best out of their computers. While we did not do any revolutionary changes, many details have been polished, the API is much cleaner and less error-prone. One huge improvement is how notifications are sent to the platform, finally providing enough details to the tools.

In Qt 5 after taking a step back we have improved platform integration on Mac, Windows and Linux. This will be the first Qt release which offers a good accessibility support on all desktops. We also extended our effort towards QML next to the traditional QWidget world. There are still some open questions, but the current system has actually already been tested extensively, for example in Unity-2d which is well liked by users of screen readers using Ubuntu, showing that QML and accessibility can go hand in hand.

For Mac we finally have a Cocoa backend instead of the dated Carbon one. This bridge (bridging the Qt accessibility APIs to the Mac API) is still young and fresh and thus needs your help in testing and polishing it.

The Windows accessibility bridge now supports IAccessible 2 next to MSAA which should give much better support for many elements such as tables and lists to the screen readers.

For Linux the new qt-at-spi bridge has been tested with Qt 4 and works with Gnome and KDE. For Qt 5 it has seen major improvements and will be merged to be shipped with Qt itself (as plugin), either for Qt 5.0 or 5.1.

Application developers should expect more accessibility features and better screen reader support out of the box on all platforms. It is to be expected that it's not yet perfect, thus give us feedback. If you did support more extensive accessibility features and your own widget implementations subclassing QAccessibleInterface we're especially keen on hearing from you. The documentation is all there, so feel free to read the comments in the .cpp files explaining the improved classes.

Blog Topics: