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;
49class Q_GUI_EXPORT QAccessibleInterface
52 virtual ~QAccessibleInterface();
56 virtual bool isValid()
const = 0;
57 virtual QObject *object()
const = 0;
58 virtual QWindow *window()
const;
61 virtual QList<std::pair<QAccessibleInterface *, QAccessible::Relation>>
62 relations(QAccessible::Relation match = QAccessible::AllRelations)
const;
63 virtual QAccessibleInterface *focusChild()
const;
65 virtual QAccessibleInterface *childAt(
int x,
int y)
const = 0;
68 virtual QAccessibleInterface *parent()
const = 0;
69 virtual QAccessibleInterface *child(
int index)
const = 0;
70 virtual int childCount()
const = 0;
71 virtual int indexOfChild(
const QAccessibleInterface *)
const = 0;
74 virtual QString text(QAccessible::Text t)
const = 0;
75 virtual void setText(QAccessible::Text t,
const QString &text) = 0;
76 virtual QRect rect()
const = 0;
77 virtual QAccessible::Role role()
const = 0;
78 virtual QAccessible::State state()
const = 0;
80 virtual QColor foregroundColor()
const;
81 virtual QColor backgroundColor()
const;
83 inline QAccessibleTextInterface *textInterface()
84 {
return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); }
86 inline QAccessibleEditableTextInterface *editableTextInterface()
87 {
return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); }
89 inline QAccessibleValueInterface *valueInterface()
90 {
return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); }
92 inline QAccessibleActionInterface *actionInterface()
93 {
return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); }
95 inline QAccessibleImageInterface *imageInterface()
96 {
return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); }
98 inline QAccessibleTableInterface *tableInterface()
99 {
return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); }
101 inline QAccessibleTableCellInterface *tableCellInterface()
102 {
return reinterpret_cast<QAccessibleTableCellInterface *>(interface_cast(QAccessible::TableCellInterface)); }
104 inline QAccessibleHyperlinkInterface *hyperlinkInterface()
105 {
return reinterpret_cast<QAccessibleHyperlinkInterface *>(interface_cast(QAccessible::HyperlinkInterface)); }
107 inline QAccessibleSelectionInterface *selectionInterface()
108 {
return reinterpret_cast<QAccessibleSelectionInterface *>(interface_cast(QAccessible::SelectionInterface)); }
110 inline QAccessibleAttributesInterface *attributesInterface()
111 {
return reinterpret_cast<QAccessibleAttributesInterface *>(interface_cast(QAccessible::AttributesInterface)); }
113 virtual void virtual_hook(
int id,
void *data);
115 virtual void *interface_cast(QAccessible::InterfaceType)
119 friend class QAccessibleCache;
122class Q_GUI_EXPORT QAccessibleTextInterface
125 virtual ~QAccessibleTextInterface();
127 virtual void selection(
int selectionIndex,
int *startOffset,
int *endOffset)
const = 0;
128 virtual int selectionCount()
const = 0;
129 virtual void addSelection(
int startOffset,
int endOffset) = 0;
130 virtual void removeSelection(
int selectionIndex) = 0;
131 virtual void setSelection(
int selectionIndex,
int startOffset,
int endOffset) = 0;
134 virtual int cursorPosition()
const = 0;
135 virtual void setCursorPosition(
int position) = 0;
138 virtual QString text(
int startOffset,
int endOffset)
const = 0;
139 virtual QString textBeforeOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
140 int *startOffset,
int *endOffset)
const;
141 virtual QString textAfterOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
142 int *startOffset,
int *endOffset)
const;
143 virtual QString textAtOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
144 int *startOffset,
int *endOffset)
const;
145 virtual int characterCount()
const = 0;
148 virtual QRect characterRect(
int offset)
const = 0;
149 virtual int offsetAtPoint(
const QPoint &point)
const = 0;
151 virtual void scrollToSubstring(
int startIndex,
int endIndex) = 0;
152 virtual QString attributes(
int offset,
int *startOffset,
int *endOffset)
const = 0;
155class Q_GUI_EXPORT QAccessibleEditableTextInterface
158 virtual ~QAccessibleEditableTextInterface();
160 virtual void deleteText(
int startOffset,
int endOffset) = 0;
161 virtual void insertText(
int offset,
const QString &text) = 0;
162 virtual void replaceText(
int startOffset,
int endOffset,
const QString &text) = 0;
165class Q_GUI_EXPORT QAccessibleValueInterface
168 virtual ~QAccessibleValueInterface();
170 virtual QVariant currentValue()
const = 0;
171 virtual void setCurrentValue(
const QVariant &value) = 0;
172 virtual QVariant maximumValue()
const = 0;
173 virtual QVariant minimumValue()
const = 0;
174 virtual QVariant minimumStepSize()
const = 0;
177class Q_GUI_EXPORT QAccessibleTableCellInterface
180 virtual ~QAccessibleTableCellInterface();
182 virtual bool isSelected()
const = 0;
184 virtual QList<QAccessibleInterface*> columnHeaderCells()
const = 0;
185 virtual QList<QAccessibleInterface*> rowHeaderCells()
const = 0;
186 virtual int columnIndex()
const = 0;
187 virtual int rowIndex()
const = 0;
188 virtual int columnExtent()
const = 0;
189 virtual int rowExtent()
const = 0;
191 virtual QAccessibleInterface* table()
const = 0;
194class Q_GUI_EXPORT QAccessibleTableInterface
197 virtual ~QAccessibleTableInterface();
199 virtual QAccessibleInterface *caption()
const = 0;
200 virtual QAccessibleInterface *summary()
const = 0;
202 virtual QAccessibleInterface *cellAt (
int row,
int column)
const = 0;
203 virtual int selectedCellCount()
const = 0;
204 virtual QList<QAccessibleInterface*> selectedCells()
const = 0;
206 virtual QString columnDescription(
int column)
const = 0;
207 virtual QString rowDescription(
int row)
const = 0;
208 virtual int selectedColumnCount()
const = 0;
209 virtual int selectedRowCount()
const = 0;
210 virtual int columnCount()
const = 0;
211 virtual int rowCount()
const = 0;
212 virtual QList<
int> selectedColumns()
const = 0;
213 virtual QList<
int> selectedRows()
const = 0;
214 virtual bool isColumnSelected(
int column)
const = 0;
215 virtual bool isRowSelected(
int row)
const = 0;
216 virtual bool selectRow(
int row) = 0;
217 virtual bool selectColumn(
int column) = 0;
218 virtual bool unselectRow(
int row) = 0;
219 virtual bool unselectColumn(
int column) = 0;
221 virtual void modelChange(QAccessibleTableModelChangeEvent *event) = 0;
224friend class QAbstractItemView;
225friend class QAbstractItemViewPrivate;
228class Q_GUI_EXPORT QAccessibleActionInterface
230 Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
232 virtual ~QAccessibleActionInterface();
234 virtual QStringList actionNames()
const = 0;
235 virtual QString localizedActionName(
const QString &name)
const;
236 virtual QString localizedActionDescription(
const QString &name)
const;
237 virtual void doAction(
const QString &actionName) = 0;
238 virtual QStringList keyBindingsForAction(
const QString &actionName)
const = 0;
240 static const QString &pressAction();
241 static const QString &increaseAction();
242 static const QString &decreaseAction();
243 static const QString &showMenuAction();
244 static const QString &setFocusAction();
245 static const QString &showOnScreenAction();
246 static const QString &toggleAction();
247 static QString scrollLeftAction();
248 static QString scrollRightAction();
249 static QString scrollUpAction();
250 static QString scrollDownAction();
251 static QString nextPageAction();
252 static QString previousPageAction();
255class Q_GUI_EXPORT QAccessibleImageInterface
258 virtual ~QAccessibleImageInterface();
260 virtual QString imageDescription()
const = 0;
261 virtual QSize imageSize()
const = 0;
262 virtual QPoint imagePosition()
const = 0;
265class Q_GUI_EXPORT QAccessibleHyperlinkInterface
268 virtual ~QAccessibleHyperlinkInterface();
270 virtual QString anchor()
const = 0;
271 virtual QString anchorTarget()
const = 0;
272 virtual int startIndex()
const = 0;
273 virtual int endIndex()
const = 0;
274 virtual bool isValid()
const = 0;
277class Q_GUI_EXPORT QAccessibleSelectionInterface
280 virtual ~QAccessibleSelectionInterface();
282 virtual int selectedItemCount()
const = 0;
283 virtual QList<QAccessibleInterface*> selectedItems()
const = 0;
284 virtual QAccessibleInterface* selectedItem(
int selectionIndex)
const;
285 virtual bool isSelected(QAccessibleInterface *childItem)
const;
286 virtual bool select(QAccessibleInterface *childItem) = 0;
287 virtual bool unselect(QAccessibleInterface *childItem) = 0;
288 virtual bool selectAll() = 0;
289 virtual bool clear() = 0;
292class Q_GUI_EXPORT QAccessibleAttributesInterface
295 virtual ~QAccessibleAttributesInterface();
296 virtual QList<QAccessible::Attribute> attributeKeys()
const = 0;
297 virtual QVariant attributeValue(QAccessible::Attribute key)
const = 0;
301class Q_GUI_EXPORT QAccessibleEvent
303 Q_DISABLE_COPY(QAccessibleEvent)
306 inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
307 : m_type(typ), m_object(obj), m_child(-1)
309 if (m_type != QAccessible::ObjectDestroyed)
313 Q_ASSERT(m_type != QAccessible::ValueChanged);
314 Q_ASSERT(m_type != QAccessible::StateChanged);
315 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
316 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
317 Q_ASSERT(m_type != QAccessible::TextInserted);
318 Q_ASSERT(m_type != QAccessible::TextRemoved);
319 Q_ASSERT(m_type != QAccessible::TextUpdated);
320 Q_ASSERT(m_type != QAccessible::TableModelChanged);
321 Q_ASSERT(m_type != QAccessible::Announcement);
324 inline QAccessibleEvent(QAccessibleInterface *iface, QAccessible::Event typ)
328 Q_ASSERT(m_type != QAccessible::ValueChanged);
329 Q_ASSERT(m_type != QAccessible::StateChanged);
330 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
331 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
332 Q_ASSERT(m_type != QAccessible::TextInserted);
333 Q_ASSERT(m_type != QAccessible::TextRemoved);
334 Q_ASSERT(m_type != QAccessible::TextUpdated);
335 Q_ASSERT(m_type != QAccessible::TableModelChanged);
336 Q_ASSERT(m_type != QAccessible::Announcement);
337 m_uniqueId = QAccessible::uniqueId(iface);
338 m_object = iface->object();
341 virtual ~QAccessibleEvent();
343 QAccessible::Event type()
const {
return m_type; }
344 QObject *object()
const {
return m_object; }
345 QAccessible::Id uniqueId()
const;
347 void setChild(
int chld);
348 int child()
const {
return m_child; }
350 virtual QAccessibleInterface *accessibleInterface()
const;
353 QAccessible::Event m_type;
357 QAccessible::Id m_uniqueId;
360 friend class QTestAccessibility;
363class Q_GUI_EXPORT QAccessibleStateChangeEvent :
public QAccessibleEvent
366 inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
367 : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
369 m_type = QAccessible::StateChanged;
371 inline QAccessibleStateChangeEvent(QAccessibleInterface *iface, QAccessible::State state)
372 : QAccessibleEvent(iface, QAccessible::InvalidEvent), m_changedStates(state)
374 m_type = QAccessible::StateChanged;
376 ~QAccessibleStateChangeEvent();
378 QAccessible::State changedStates()
const {
379 return m_changedStates;
383 QAccessible::State m_changedStates;
387class Q_GUI_EXPORT QAccessibleTextCursorEvent :
public QAccessibleEvent
390 inline QAccessibleTextCursorEvent(QObject *obj,
int cursorPos)
391 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
392 , m_cursorPosition(cursorPos)
394 m_type = QAccessible::TextCaretMoved;
396 inline QAccessibleTextCursorEvent(QAccessibleInterface *iface,
int cursorPos)
397 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
398 , m_cursorPosition(cursorPos)
400 m_type = QAccessible::TextCaretMoved;
403 ~QAccessibleTextCursorEvent();
405 void setCursorPosition(
int position) { m_cursorPosition = position; }
406 int cursorPosition()
const {
return m_cursorPosition; }
409 int m_cursorPosition;
413class Q_GUI_EXPORT QAccessibleTextSelectionEvent :
public QAccessibleTextCursorEvent
416 inline QAccessibleTextSelectionEvent(QObject *obj,
int start,
int end)
417 : QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
418 , m_selectionStart(start), m_selectionEnd(end)
420 m_type = QAccessible::TextSelectionChanged;
422 inline QAccessibleTextSelectionEvent(QAccessibleInterface *iface,
int start,
int end)
423 : QAccessibleTextCursorEvent(iface, (start == -1) ? 0 : end)
424 , m_selectionStart(start), m_selectionEnd(end)
426 m_type = QAccessible::TextSelectionChanged;
429 ~QAccessibleTextSelectionEvent();
431 void setSelection(
int start,
int end) {
432 m_selectionStart = start;
433 m_selectionEnd = end;
436 int selectionStart()
const {
return m_selectionStart; }
437 int selectionEnd()
const {
return m_selectionEnd; }
440 int m_selectionStart;
444class Q_GUI_EXPORT QAccessibleTextInsertEvent :
public QAccessibleTextCursorEvent
447 inline QAccessibleTextInsertEvent(QObject *obj,
int position,
const QString &text)
448 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
449 , m_position(position), m_text(text)
451 m_type = QAccessible::TextInserted;
453 inline QAccessibleTextInsertEvent(QAccessibleInterface *iface,
int position,
const QString &text)
454 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
455 , m_position(position), m_text(text)
457 m_type = QAccessible::TextInserted;
460 ~QAccessibleTextInsertEvent();
462 QString textInserted()
const {
465 int changePosition()
const {
474class Q_GUI_EXPORT QAccessibleTextRemoveEvent :
public QAccessibleTextCursorEvent
477 inline QAccessibleTextRemoveEvent(QObject *obj,
int position,
const QString &text)
478 : QAccessibleTextCursorEvent(obj, position)
479 , m_position(position), m_text(text)
481 m_type = QAccessible::TextRemoved;
483 inline QAccessibleTextRemoveEvent(QAccessibleInterface *iface,
int position,
const QString &text)
484 : QAccessibleTextCursorEvent(iface, position)
485 , m_position(position), m_text(text)
487 m_type = QAccessible::TextRemoved;
490 ~QAccessibleTextRemoveEvent();
492 QString textRemoved()
const {
495 int changePosition()
const {
504class Q_GUI_EXPORT QAccessibleTextUpdateEvent :
public QAccessibleTextCursorEvent
507 inline QAccessibleTextUpdateEvent(QObject *obj,
int position,
const QString &oldText,
const QString &text)
508 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
509 , m_position(position), m_oldText(oldText), m_text(text)
511 m_type = QAccessible::TextUpdated;
513 inline QAccessibleTextUpdateEvent(QAccessibleInterface *iface,
int position,
const QString &oldText,
const QString &text)
514 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
515 , m_position(position), m_oldText(oldText), m_text(text)
517 m_type = QAccessible::TextUpdated;
520 ~QAccessibleTextUpdateEvent();
522 QString textRemoved()
const {
525 QString textInserted()
const {
528 int changePosition()
const {
538class Q_GUI_EXPORT QAccessibleValueChangeEvent :
public QAccessibleEvent
541 inline QAccessibleValueChangeEvent(QObject *obj,
const QVariant &val)
542 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
545 m_type = QAccessible::ValueChanged;
547 inline QAccessibleValueChangeEvent(QAccessibleInterface *iface,
const QVariant &val)
548 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
551 m_type = QAccessible::ValueChanged;
554 ~QAccessibleValueChangeEvent();
556 void setValue(
const QVariant & val) { m_value= val; }
557 QVariant value()
const {
return m_value; }
563class Q_GUI_EXPORT QAccessibleTableModelChangeEvent :
public QAccessibleEvent
566 enum ModelChangeType {
575 inline QAccessibleTableModelChangeEvent(QObject *obj, ModelChangeType changeType)
576 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
577 , m_modelChangeType(changeType)
578 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
580 m_type = QAccessible::TableModelChanged;
582 inline QAccessibleTableModelChangeEvent(QAccessibleInterface *iface, ModelChangeType changeType)
583 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
584 , m_modelChangeType(changeType)
585 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
587 m_type = QAccessible::TableModelChanged;
590 ~QAccessibleTableModelChangeEvent();
592 void setModelChangeType(ModelChangeType changeType) { m_modelChangeType = changeType; }
593 ModelChangeType modelChangeType()
const {
return m_modelChangeType; }
595 void setFirstRow(
int row) { m_firstRow = row; }
596 void setFirstColumn(
int col) { m_firstColumn = col; }
597 void setLastRow(
int row) { m_lastRow = row; }
598 void setLastColumn(
int col) { m_lastColumn = col; }
599 int firstRow()
const {
return m_firstRow; }
600 int firstColumn()
const {
return m_firstColumn; }
601 int lastRow()
const {
return m_lastRow; }
602 int lastColumn()
const {
return m_lastColumn; }
605 ModelChangeType m_modelChangeType;
612class Q_GUI_EXPORT QAccessibleAnnouncementEvent :
public QAccessibleEvent
615 explicit QAccessibleAnnouncementEvent(QObject *object,
const QString &message)
616 : QAccessibleEvent(object, QAccessible::InvalidEvent)
618 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
620 m_type = QAccessible::Announcement;
623 explicit QAccessibleAnnouncementEvent(QAccessibleInterface *iface,
const QString &message)
624 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
626 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
628 m_type = QAccessible::Announcement;
631 ~QAccessibleAnnouncementEvent() override;
633 QString message()
const {
return m_message; }
634 QAccessible::AnnouncementPoliteness politeness()
const {
return m_politeness; }
635 void setPoliteness(QAccessible::AnnouncementPoliteness politeness)
636 { m_politeness = politeness; }
640 QAccessible::AnnouncementPoliteness m_politeness;
644#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
645Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
648Q_GUI_EXPORT
const char *qAccessibleRoleString(QAccessible::Role role);
649Q_GUI_EXPORT
const char *qAccessibleEventString(QAccessible::Event event);
650Q_GUI_EXPORT QString qAccessibleLocalizedActionDescription(
const QString &actionName);
652#ifndef QT_NO_DEBUG_STREAM
653Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleInterface *iface);
654Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleEvent &ev);
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)