8#pragma qt_class(QAccessible)
13#include <QtGui/qtguiglobal.h>
15#if QT_CONFIG(accessibility)
17#include <QtCore/qcoreapplication.h>
18#include <QtCore/qglobal.h>
19#include <QtCore/qlist.h>
20#include <QtCore/qobject.h>
21#include <QtCore/qrect.h>
22#include <QtCore/qset.h>
23#include <QtCore/qvariant.h>
24#include <QtGui/qcolor.h>
25#include <QtGui/qevent.h>
26#include <QtGui/qaccessible_base.h>
31class QAccessibleInterface;
32class QAccessibleEvent;
36class QAccessible2Interface;
37class QAccessibleTextInterface;
38class QAccessibleEditableTextInterface;
39class QAccessibleValueInterface;
40class QAccessibleActionInterface;
41class QAccessibleImageInterface;
42class QAccessibleTableInterface;
43class QAccessibleTableCellInterface;
44class QAccessibleHyperlinkInterface;
45class QAccessibleSelectionInterface;
46class QAccessibleAttributesInterface;
47class QAccessibleTableModelChangeEvent;
48class QAccessibleViewportInterface;
50class Q_GUI_EXPORT QAccessibleInterface
52 Q_DISABLE_COPY_MOVE(QAccessibleInterface)
54 QAccessibleInterface() =
default;
55 virtual ~QAccessibleInterface();
59 virtual bool isValid()
const = 0;
60 virtual QObject *object()
const = 0;
61 virtual QWindow *window()
const;
64 virtual QList<std::pair<QAccessibleInterface *, QAccessible::Relation>>
65 relations(QAccessible::Relation match = QAccessible::AllRelations)
const;
66 virtual QAccessibleInterface *focusChild()
const;
68 virtual QAccessibleInterface *childAt(
int x,
int y)
const = 0;
71 virtual QAccessibleInterface *parent()
const = 0;
72 virtual QAccessibleInterface *child(
int index)
const = 0;
73 virtual int childCount()
const = 0;
74 virtual int indexOfChild(
const QAccessibleInterface *)
const = 0;
77 virtual QString text(QAccessible::Text t)
const = 0;
78 virtual void setText(QAccessible::Text t,
const QString &text) = 0;
79 virtual QRect rect()
const = 0;
80 virtual QAccessible::Role role()
const = 0;
81 virtual QAccessible::State state()
const = 0;
83 virtual QColor foregroundColor()
const;
84 virtual QColor backgroundColor()
const;
86 inline QAccessibleTextInterface *textInterface()
87 {
return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); }
89 inline QAccessibleEditableTextInterface *editableTextInterface()
90 {
return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); }
92 inline QAccessibleValueInterface *valueInterface()
93 {
return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); }
95 inline QAccessibleActionInterface *actionInterface()
96 {
return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); }
98 inline QAccessibleImageInterface *imageInterface()
99 {
return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); }
101 inline QAccessibleTableInterface *tableInterface()
102 {
return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); }
104 inline QAccessibleTableCellInterface *tableCellInterface()
105 {
return reinterpret_cast<QAccessibleTableCellInterface *>(interface_cast(QAccessible::TableCellInterface)); }
107 inline QAccessibleHyperlinkInterface *hyperlinkInterface()
108 {
return reinterpret_cast<QAccessibleHyperlinkInterface *>(interface_cast(QAccessible::HyperlinkInterface)); }
110 inline QAccessibleSelectionInterface *selectionInterface()
111 {
return reinterpret_cast<QAccessibleSelectionInterface *>(interface_cast(QAccessible::SelectionInterface)); }
113 inline QAccessibleAttributesInterface *attributesInterface()
114 {
return reinterpret_cast<QAccessibleAttributesInterface *>(interface_cast(QAccessible::AttributesInterface)); }
116 inline QAccessibleViewportInterface *viewportInterface()
117 {
return reinterpret_cast<QAccessibleViewportInterface *>(interface_cast(QAccessible::ViewportInterface)); }
119 virtual void virtual_hook(
int id,
void *data);
121 virtual void *interface_cast(QAccessible::InterfaceType)
125 friend class QAccessibleCache;
128class Q_GUI_EXPORT QAccessibleTextInterface
130 Q_DISABLE_COPY_MOVE(QAccessibleTextInterface)
132 QAccessibleTextInterface() =
default;
133 virtual ~QAccessibleTextInterface();
136 virtual void selection(
int selectionIndex,
int *startOffset,
int *endOffset)
const = 0;
137 virtual int selectionCount()
const = 0;
138 virtual void addSelection(
int startOffset,
int endOffset) = 0;
139 virtual void removeSelection(
int selectionIndex) = 0;
140 virtual void setSelection(
int selectionIndex,
int startOffset,
int endOffset) = 0;
143 virtual int cursorPosition()
const = 0;
144 virtual void setCursorPosition(
int position) = 0;
147 virtual QString text(
int startOffset,
int endOffset)
const = 0;
148 virtual QString textBeforeOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
149 int *startOffset,
int *endOffset)
const;
150 virtual QString textAfterOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
151 int *startOffset,
int *endOffset)
const;
152 virtual QString textAtOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
153 int *startOffset,
int *endOffset)
const;
154 virtual int characterCount()
const = 0;
157 virtual QRect characterRect(
int offset)
const = 0;
158 virtual int offsetAtPoint(
const QPoint &point)
const = 0;
160 virtual void scrollToSubstring(
int startIndex,
int endIndex) = 0;
161 virtual QString attributes(
int offset,
int *startOffset,
int *endOffset)
const = 0;
164class Q_GUI_EXPORT QAccessibleEditableTextInterface
166 Q_DISABLE_COPY_MOVE(QAccessibleEditableTextInterface)
168 QAccessibleEditableTextInterface() =
default;
169 virtual ~QAccessibleEditableTextInterface();
171 virtual void deleteText(
int startOffset,
int endOffset) = 0;
172 virtual void insertText(
int offset,
const QString &text) = 0;
173 virtual void replaceText(
int startOffset,
int endOffset,
const QString &text) = 0;
176class Q_GUI_EXPORT QAccessibleValueInterface
178 Q_DISABLE_COPY_MOVE(QAccessibleValueInterface)
180 QAccessibleValueInterface() =
default;
181 virtual ~QAccessibleValueInterface();
183 virtual QVariant currentValue()
const = 0;
184 virtual void setCurrentValue(
const QVariant &value) = 0;
185 virtual QVariant maximumValue()
const = 0;
186 virtual QVariant minimumValue()
const = 0;
187 virtual QVariant minimumStepSize()
const = 0;
190class Q_GUI_EXPORT QAccessibleTableCellInterface
192 Q_DISABLE_COPY_MOVE(QAccessibleTableCellInterface)
194 QAccessibleTableCellInterface() =
default;
195 virtual ~QAccessibleTableCellInterface();
197 virtual bool isSelected()
const = 0;
199 virtual QList<QAccessibleInterface*> columnHeaderCells()
const = 0;
200 virtual QList<QAccessibleInterface*> rowHeaderCells()
const = 0;
201 virtual int columnIndex()
const = 0;
202 virtual int rowIndex()
const = 0;
203 virtual int columnExtent()
const = 0;
204 virtual int rowExtent()
const = 0;
206 virtual QAccessibleInterface* table()
const = 0;
209class Q_GUI_EXPORT QAccessibleTableInterface
211 Q_DISABLE_COPY_MOVE(QAccessibleTableInterface)
213 QAccessibleTableInterface() =
default;
214 virtual ~QAccessibleTableInterface();
216 virtual QAccessibleInterface *caption()
const = 0;
217 virtual QAccessibleInterface *summary()
const = 0;
219 virtual QAccessibleInterface *cellAt (
int row,
int column)
const = 0;
220 virtual int selectedCellCount()
const = 0;
221 virtual QList<QAccessibleInterface*> selectedCells()
const = 0;
223 virtual QString columnDescription(
int column)
const = 0;
224 virtual QString rowDescription(
int row)
const = 0;
225 virtual int selectedColumnCount()
const = 0;
226 virtual int selectedRowCount()
const = 0;
227 virtual int columnCount()
const = 0;
228 virtual int rowCount()
const = 0;
229 virtual QList<
int> selectedColumns()
const = 0;
230 virtual QList<
int> selectedRows()
const = 0;
231 virtual bool isColumnSelected(
int column)
const = 0;
232 virtual bool isRowSelected(
int row)
const = 0;
233 virtual bool selectRow(
int row) = 0;
234 virtual bool selectColumn(
int column) = 0;
235 virtual bool unselectRow(
int row) = 0;
236 virtual bool unselectColumn(
int column) = 0;
238 virtual void modelChange(QAccessibleTableModelChangeEvent *event) = 0;
241friend class QAbstractItemView;
242friend class QAbstractItemViewPrivate;
245class Q_GUI_EXPORT QAccessibleActionInterface
247 Q_DISABLE_COPY_MOVE(QAccessibleActionInterface)
248 Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
250 QAccessibleActionInterface() =
default;
251 virtual ~QAccessibleActionInterface();
253 virtual QStringList actionNames()
const = 0;
254 virtual QString localizedActionName(
const QString &name)
const;
255 virtual QString localizedActionDescription(
const QString &name)
const;
256 virtual void doAction(
const QString &actionName) = 0;
257 virtual QStringList keyBindingsForAction(
const QString &actionName)
const = 0;
259 static const QString &pressAction();
260 static const QString &increaseAction();
261 static const QString &decreaseAction();
262 static const QString &showMenuAction();
263 static const QString &setFocusAction();
264 static const QString &showOnScreenAction();
265 static const QString &toggleAction();
266 static QString scrollLeftAction();
267 static QString scrollRightAction();
268 static QString scrollUpAction();
269 static QString scrollDownAction();
270 static QString nextPageAction();
271 static QString previousPageAction();
274class Q_GUI_EXPORT QAccessibleImageInterface
276 Q_DISABLE_COPY_MOVE(QAccessibleImageInterface)
278 QAccessibleImageInterface() =
default;
279 virtual ~QAccessibleImageInterface();
281 virtual QString imageDescription()
const = 0;
282 virtual QSize imageSize()
const = 0;
283 virtual QPoint imagePosition()
const = 0;
286class Q_GUI_EXPORT QAccessibleHyperlinkInterface
288 Q_DISABLE_COPY_MOVE(QAccessibleHyperlinkInterface)
290 QAccessibleHyperlinkInterface() =
default;
291 virtual ~QAccessibleHyperlinkInterface();
293 virtual QString anchor()
const = 0;
294 virtual QString anchorTarget()
const = 0;
295 virtual int startIndex()
const = 0;
296 virtual int endIndex()
const = 0;
297 virtual bool isValid()
const = 0;
300class Q_GUI_EXPORT QAccessibleSelectionInterface
302 Q_DISABLE_COPY_MOVE(QAccessibleSelectionInterface)
304 QAccessibleSelectionInterface() =
default;
305 virtual ~QAccessibleSelectionInterface();
307 virtual int selectedItemCount()
const = 0;
308 virtual QList<QAccessibleInterface*> selectedItems()
const = 0;
309 virtual QAccessibleInterface* selectedItem(
int selectionIndex)
const;
310 virtual bool isSelected(QAccessibleInterface *childItem)
const;
311 virtual bool select(QAccessibleInterface *childItem) = 0;
312 virtual bool unselect(QAccessibleInterface *childItem) = 0;
313 virtual bool selectAll() = 0;
314 virtual bool clear() = 0;
317class Q_GUI_EXPORT QAccessibleAttributesInterface
319 Q_DISABLE_COPY_MOVE(QAccessibleAttributesInterface)
321 QAccessibleAttributesInterface() =
default;
322 virtual ~QAccessibleAttributesInterface();
324 virtual QList<QAccessible::Attribute> attributeKeys()
const = 0;
325 virtual QVariant attributeValue(QAccessible::Attribute key)
const = 0;
328class Q_GUI_EXPORT QAccessibleViewportInterface
330 Q_DISABLE_COPY_MOVE(QAccessibleViewportInterface)
332 QAccessibleViewportInterface() =
default;
333 virtual ~QAccessibleViewportInterface();
335 virtual QSizeF contentSize()
const = 0;
336 virtual QPointF position()
const = 0;
337 virtual QSizeF viewportSize()
const = 0;
338 virtual bool isIndexed()
const = 0;
339 virtual void setPosition(QPointF position) = 0;
343class Q_GUI_EXPORT QAccessibleEvent
345 Q_DISABLE_COPY(QAccessibleEvent)
348 inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
349 : m_type(typ), m_object(obj), m_child(-1)
351 if (m_type != QAccessible::ObjectDestroyed)
355 Q_ASSERT(m_type != QAccessible::ValueChanged);
356 Q_ASSERT(m_type != QAccessible::StateChanged);
357 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
358 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
359 Q_ASSERT(m_type != QAccessible::TextInserted);
360 Q_ASSERT(m_type != QAccessible::TextRemoved);
361 Q_ASSERT(m_type != QAccessible::TextUpdated);
362 Q_ASSERT(m_type != QAccessible::TableModelChanged);
363 Q_ASSERT(m_type != QAccessible::Announcement);
366 inline QAccessibleEvent(QAccessibleInterface *iface, QAccessible::Event typ)
370 Q_ASSERT(m_type != QAccessible::ValueChanged);
371 Q_ASSERT(m_type != QAccessible::StateChanged);
372 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
373 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
374 Q_ASSERT(m_type != QAccessible::TextInserted);
375 Q_ASSERT(m_type != QAccessible::TextRemoved);
376 Q_ASSERT(m_type != QAccessible::TextUpdated);
377 Q_ASSERT(m_type != QAccessible::TableModelChanged);
378 Q_ASSERT(m_type != QAccessible::Announcement);
379 m_uniqueId = QAccessible::uniqueId(iface);
380 m_object = iface->object();
383 virtual ~QAccessibleEvent();
385 QAccessible::Event type()
const {
return m_type; }
386 QObject *object()
const {
return m_object; }
387 QAccessible::Id uniqueId()
const;
389 void setChild(
int chld);
390 int child()
const {
return m_child; }
392 virtual QAccessibleInterface *accessibleInterface()
const;
395 QAccessible::Event m_type;
399 QAccessible::Id m_uniqueId;
402 friend class QTestAccessibility;
405class Q_GUI_EXPORT QAccessibleStateChangeEvent :
public QAccessibleEvent
408 inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
409 : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
411 m_type = QAccessible::StateChanged;
413 inline QAccessibleStateChangeEvent(QAccessibleInterface *iface, QAccessible::State state)
414 : QAccessibleEvent(iface, QAccessible::InvalidEvent), m_changedStates(state)
416 m_type = QAccessible::StateChanged;
418 ~QAccessibleStateChangeEvent();
420 QAccessible::State changedStates()
const {
421 return m_changedStates;
425 QAccessible::State m_changedStates;
429class Q_GUI_EXPORT QAccessibleTextCursorEvent :
public QAccessibleEvent
432 inline QAccessibleTextCursorEvent(QObject *obj,
int cursorPos)
433 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
434 , m_cursorPosition(cursorPos)
436 m_type = QAccessible::TextCaretMoved;
438 inline QAccessibleTextCursorEvent(QAccessibleInterface *iface,
int cursorPos)
439 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
440 , m_cursorPosition(cursorPos)
442 m_type = QAccessible::TextCaretMoved;
445 ~QAccessibleTextCursorEvent();
447 void setCursorPosition(
int position) { m_cursorPosition = position; }
448 int cursorPosition()
const {
return m_cursorPosition; }
451 int m_cursorPosition;
455class Q_GUI_EXPORT QAccessibleTextSelectionEvent :
public QAccessibleTextCursorEvent
458 inline QAccessibleTextSelectionEvent(QObject *obj,
int start,
int end)
459 : QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
460 , m_selectionStart(start), m_selectionEnd(end)
462 m_type = QAccessible::TextSelectionChanged;
464 inline QAccessibleTextSelectionEvent(QAccessibleInterface *iface,
int start,
int end)
465 : QAccessibleTextCursorEvent(iface, (start == -1) ? 0 : end)
466 , m_selectionStart(start), m_selectionEnd(end)
468 m_type = QAccessible::TextSelectionChanged;
471 ~QAccessibleTextSelectionEvent();
473 void setSelection(
int start,
int end) {
474 m_selectionStart = start;
475 m_selectionEnd = end;
478 int selectionStart()
const {
return m_selectionStart; }
479 int selectionEnd()
const {
return m_selectionEnd; }
482 int m_selectionStart;
486class Q_GUI_EXPORT QAccessibleTextInsertEvent :
public QAccessibleTextCursorEvent
489 inline QAccessibleTextInsertEvent(QObject *obj,
int position,
const QString &text)
490 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
491 , m_position(position), m_text(text)
493 m_type = QAccessible::TextInserted;
495 inline QAccessibleTextInsertEvent(QAccessibleInterface *iface,
int position,
const QString &text)
496 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
497 , m_position(position), m_text(text)
499 m_type = QAccessible::TextInserted;
502 ~QAccessibleTextInsertEvent();
504 QString textInserted()
const {
507 int changePosition()
const {
516class Q_GUI_EXPORT QAccessibleTextRemoveEvent :
public QAccessibleTextCursorEvent
519 inline QAccessibleTextRemoveEvent(QObject *obj,
int position,
const QString &text)
520 : QAccessibleTextCursorEvent(obj, position)
521 , m_position(position), m_text(text)
523 m_type = QAccessible::TextRemoved;
525 inline QAccessibleTextRemoveEvent(QAccessibleInterface *iface,
int position,
const QString &text)
526 : QAccessibleTextCursorEvent(iface, position)
527 , m_position(position), m_text(text)
529 m_type = QAccessible::TextRemoved;
532 ~QAccessibleTextRemoveEvent();
534 QString textRemoved()
const {
537 int changePosition()
const {
546class Q_GUI_EXPORT QAccessibleTextUpdateEvent :
public QAccessibleTextCursorEvent
549 inline QAccessibleTextUpdateEvent(QObject *obj,
int position,
const QString &oldText,
const QString &text)
550 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
551 , m_position(position), m_oldText(oldText), m_text(text)
553 m_type = QAccessible::TextUpdated;
555 inline QAccessibleTextUpdateEvent(QAccessibleInterface *iface,
int position,
const QString &oldText,
const QString &text)
556 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
557 , m_position(position), m_oldText(oldText), m_text(text)
559 m_type = QAccessible::TextUpdated;
562 ~QAccessibleTextUpdateEvent();
564 QString textRemoved()
const {
567 QString textInserted()
const {
570 int changePosition()
const {
580class Q_GUI_EXPORT QAccessibleValueChangeEvent :
public QAccessibleEvent
583 inline QAccessibleValueChangeEvent(QObject *obj,
const QVariant &val)
584 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
587 m_type = QAccessible::ValueChanged;
589 inline QAccessibleValueChangeEvent(QAccessibleInterface *iface,
const QVariant &val)
590 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
593 m_type = QAccessible::ValueChanged;
596 ~QAccessibleValueChangeEvent();
598 void setValue(
const QVariant & val) { m_value= val; }
599 QVariant value()
const {
return m_value; }
605class Q_GUI_EXPORT QAccessibleTableModelChangeEvent :
public QAccessibleEvent
608 enum ModelChangeType {
617 inline QAccessibleTableModelChangeEvent(QObject *obj, ModelChangeType changeType)
618 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
619 , m_modelChangeType(changeType)
620 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
622 m_type = QAccessible::TableModelChanged;
624 inline QAccessibleTableModelChangeEvent(QAccessibleInterface *iface, ModelChangeType changeType)
625 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
626 , m_modelChangeType(changeType)
627 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
629 m_type = QAccessible::TableModelChanged;
632 ~QAccessibleTableModelChangeEvent();
634 void setModelChangeType(ModelChangeType changeType) { m_modelChangeType = changeType; }
635 ModelChangeType modelChangeType()
const {
return m_modelChangeType; }
637 void setFirstRow(
int row) { m_firstRow = row; }
638 void setFirstColumn(
int col) { m_firstColumn = col; }
639 void setLastRow(
int row) { m_lastRow = row; }
640 void setLastColumn(
int col) { m_lastColumn = col; }
641 int firstRow()
const {
return m_firstRow; }
642 int firstColumn()
const {
return m_firstColumn; }
643 int lastRow()
const {
return m_lastRow; }
644 int lastColumn()
const {
return m_lastColumn; }
647 ModelChangeType m_modelChangeType;
654class Q_GUI_EXPORT QAccessibleAnnouncementEvent :
public QAccessibleEvent
657 explicit QAccessibleAnnouncementEvent(QObject *object,
const QString &message)
658 : QAccessibleEvent(object, QAccessible::InvalidEvent)
660 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
662 m_type = QAccessible::Announcement;
665 explicit QAccessibleAnnouncementEvent(QAccessibleInterface *iface,
const QString &message)
666 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
668 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
670 m_type = QAccessible::Announcement;
673 ~QAccessibleAnnouncementEvent() override;
675 QString message()
const {
return m_message; }
676 QAccessible::AnnouncementPoliteness politeness()
const {
return m_politeness; }
677 void setPoliteness(QAccessible::AnnouncementPoliteness politeness)
678 { m_politeness = politeness; }
682 QAccessible::AnnouncementPoliteness m_politeness;
686#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
687Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
690Q_GUI_EXPORT
const char *qAccessibleRoleString(QAccessible::Role role);
691Q_GUI_EXPORT
const char *qAccessibleEventString(QAccessible::Event event);
692Q_GUI_EXPORT QString qAccessibleLocalizedActionDescription(
const QString &actionName);
694#ifndef QT_NO_DEBUG_STREAM
695Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleInterface *iface);
696Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleEvent &ev);
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)