Hi,

On 2025-12-16 16:01, Volker Hilsheimer via Development wrote:
On Windows, screen readers rely on UI Automation properties such as 
PositionInSet, SizeOfSet, and Level to announce group position information 
(e.g. “option 1 of 4”). With our current setup, this information is not exposed 
via Qt’s accessibility layer, so screen readers lose this context in grouped 
controls (radio button groups, menus, lists, etc.).

I have a prototype implementation for Qt 5.15.x that provides this information 
via Windows UIA. Before turning it into an upstream contribution, I’d like to 
ask:
- Is this feature something the Qt project would be interested in supporting?
- If yes, is there a preferred API/design approach for implementing it?
- Should I first file a Jira issue, and if so, under which component?


[...]
Thanks for spotting this! Supporting this part of the UI Automation interface 
would indeed be interesting for our integration in Qt. I assume this can be 
implemented with the existing hierarchy-traversal APIs, although finding the 
position of a specific interface within its parent might be a comparatively 
expensive operation in very large lists (for instance in a tree view).

A Jira ticket that documents what the expected outcome should be for different 
controls would be great; i.e. is “Level” something that we should expect from 
nested group boxes, or only from nested menus? The component for accessibility 
issues is “GUI: Accessibility (a11y)”.

Given that you have a working implementation for UI Automation, it’s probably 
best to discuss possible approaches based on the existing patch. One thing to 
consider is whether this can/should be implemented across platforms, but that 
depends on whether the native a11y infrastructure on other platforms have that 
feature in the first place, or whether they use (or fall back to) existing 
tree-navigation infrastructure to get this information.

As far as I can see, all of the mentioned UIA properties have an equivalent in ARIA, see [1]:

* PositionInSet: "aria-posinset"
* SizeOfSet: "aria-setsize"
* Level: "aria-level"

As such, I think they're likely relevant for all platforms, not just UIA/Windows.

Using the existing QAccessibleAttributesInterface [2] could be a potential way to implement support, by adding corresponding values to the QAccessible::Attribute enum [3] and then handling those in the relevant widget a11y implementations.

For Level/"aria-level", there already is `QAccessible::Attribute::Level`.

Commit [4] added some initial mapping for UIA. As far as I can see, UIA_HeadingLevelPropertyId isn't handled in the UIA bridge yet, but that should be relatively straight-forward to add. More attributes could probably be handled similarly there (and in other platform bridges, where applicable).

In case of taking that approach, the corresponding logic for reporting these attributes could then be done in the a11y implementations of the corresponding widgets and be cross-platform.

Regards,
Michael


[1] https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes
[2] https://doc.qt.io/qt-6/qaccessibleattributesinterface.html
[3] https://doc.qt.io/qt-6/qaccessible.html#Attribute-enum
[4] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=bd0a6e83079efd8a26d9ece6055f584a8c89c1fd

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

-- 
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development

Reply via email to