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
53 virtual ~QAccessibleInterface();
57 virtual bool isValid()
const = 0;
58 virtual QObject *object()
const = 0;
59 virtual QWindow *window()
const;
62 virtual QList<std::pair<QAccessibleInterface *, QAccessible::Relation>>
63 relations(QAccessible::Relation match = QAccessible::AllRelations)
const;
64 virtual QAccessibleInterface *focusChild()
const;
66 virtual QAccessibleInterface *childAt(
int x,
int y)
const = 0;
69 virtual QAccessibleInterface *parent()
const = 0;
70 virtual QAccessibleInterface *child(
int index)
const = 0;
71 virtual int childCount()
const = 0;
72 virtual int indexOfChild(
const QAccessibleInterface *)
const = 0;
75 virtual QString text(QAccessible::Text t)
const = 0;
76 virtual void setText(QAccessible::Text t,
const QString &text) = 0;
77 virtual QRect rect()
const = 0;
78 virtual QAccessible::Role role()
const = 0;
79 virtual QAccessible::State state()
const = 0;
81 virtual QColor foregroundColor()
const;
82 virtual QColor backgroundColor()
const;
84 inline QAccessibleTextInterface *textInterface()
85 {
return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); }
87 inline QAccessibleEditableTextInterface *editableTextInterface()
88 {
return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); }
90 inline QAccessibleValueInterface *valueInterface()
91 {
return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); }
93 inline QAccessibleActionInterface *actionInterface()
94 {
return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); }
96 inline QAccessibleImageInterface *imageInterface()
97 {
return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); }
99 inline QAccessibleTableInterface *tableInterface()
100 {
return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); }
102 inline QAccessibleTableCellInterface *tableCellInterface()
103 {
return reinterpret_cast<QAccessibleTableCellInterface *>(interface_cast(QAccessible::TableCellInterface)); }
105 inline QAccessibleHyperlinkInterface *hyperlinkInterface()
106 {
return reinterpret_cast<QAccessibleHyperlinkInterface *>(interface_cast(QAccessible::HyperlinkInterface)); }
108 inline QAccessibleSelectionInterface *selectionInterface()
109 {
return reinterpret_cast<QAccessibleSelectionInterface *>(interface_cast(QAccessible::SelectionInterface)); }
111 inline QAccessibleAttributesInterface *attributesInterface()
112 {
return reinterpret_cast<QAccessibleAttributesInterface *>(interface_cast(QAccessible::AttributesInterface)); }
114 inline QAccessibleViewportInterface *viewportInterface()
115 {
return reinterpret_cast<QAccessibleViewportInterface *>(interface_cast(QAccessible::ViewportInterface)); }
117 virtual void virtual_hook(
int id,
void *data);
119 virtual void *interface_cast(QAccessible::InterfaceType)
123 friend class QAccessibleCache;
126class Q_GUI_EXPORT QAccessibleTextInterface
129 virtual ~QAccessibleTextInterface();
131 virtual void selection(
int selectionIndex,
int *startOffset,
int *endOffset)
const = 0;
132 virtual int selectionCount()
const = 0;
133 virtual void addSelection(
int startOffset,
int endOffset) = 0;
134 virtual void removeSelection(
int selectionIndex) = 0;
135 virtual void setSelection(
int selectionIndex,
int startOffset,
int endOffset) = 0;
138 virtual int cursorPosition()
const = 0;
139 virtual void setCursorPosition(
int position) = 0;
142 virtual QString text(
int startOffset,
int endOffset)
const = 0;
143 virtual QString textBeforeOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
144 int *startOffset,
int *endOffset)
const;
145 virtual QString textAfterOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
146 int *startOffset,
int *endOffset)
const;
147 virtual QString textAtOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
148 int *startOffset,
int *endOffset)
const;
149 virtual int characterCount()
const = 0;
152 virtual QRect characterRect(
int offset)
const = 0;
153 virtual int offsetAtPoint(
const QPoint &point)
const = 0;
155 virtual void scrollToSubstring(
int startIndex,
int endIndex) = 0;
156 virtual QString attributes(
int offset,
int *startOffset,
int *endOffset)
const = 0;
159class Q_GUI_EXPORT QAccessibleEditableTextInterface
162 virtual ~QAccessibleEditableTextInterface();
164 virtual void deleteText(
int startOffset,
int endOffset) = 0;
165 virtual void insertText(
int offset,
const QString &text) = 0;
166 virtual void replaceText(
int startOffset,
int endOffset,
const QString &text) = 0;
169class Q_GUI_EXPORT QAccessibleValueInterface
172 virtual ~QAccessibleValueInterface();
174 virtual QVariant currentValue()
const = 0;
175 virtual void setCurrentValue(
const QVariant &value) = 0;
176 virtual QVariant maximumValue()
const = 0;
177 virtual QVariant minimumValue()
const = 0;
178 virtual QVariant minimumStepSize()
const = 0;
181class Q_GUI_EXPORT QAccessibleTableCellInterface
184 virtual ~QAccessibleTableCellInterface();
186 virtual bool isSelected()
const = 0;
188 virtual QList<QAccessibleInterface*> columnHeaderCells()
const = 0;
189 virtual QList<QAccessibleInterface*> rowHeaderCells()
const = 0;
190 virtual int columnIndex()
const = 0;
191 virtual int rowIndex()
const = 0;
192 virtual int columnExtent()
const = 0;
193 virtual int rowExtent()
const = 0;
195 virtual QAccessibleInterface* table()
const = 0;
198class Q_GUI_EXPORT QAccessibleTableInterface
201 virtual ~QAccessibleTableInterface();
203 virtual QAccessibleInterface *caption()
const = 0;
204 virtual QAccessibleInterface *summary()
const = 0;
206 virtual QAccessibleInterface *cellAt (
int row,
int column)
const = 0;
207 virtual int selectedCellCount()
const = 0;
208 virtual QList<QAccessibleInterface*> selectedCells()
const = 0;
210 virtual QString columnDescription(
int column)
const = 0;
211 virtual QString rowDescription(
int row)
const = 0;
212 virtual int selectedColumnCount()
const = 0;
213 virtual int selectedRowCount()
const = 0;
214 virtual int columnCount()
const = 0;
215 virtual int rowCount()
const = 0;
216 virtual QList<
int> selectedColumns()
const = 0;
217 virtual QList<
int> selectedRows()
const = 0;
218 virtual bool isColumnSelected(
int column)
const = 0;
219 virtual bool isRowSelected(
int row)
const = 0;
220 virtual bool selectRow(
int row) = 0;
221 virtual bool selectColumn(
int column) = 0;
222 virtual bool unselectRow(
int row) = 0;
223 virtual bool unselectColumn(
int column) = 0;
225 virtual void modelChange(QAccessibleTableModelChangeEvent *event) = 0;
228friend class QAbstractItemView;
229friend class QAbstractItemViewPrivate;
232class Q_GUI_EXPORT QAccessibleActionInterface
234 Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
236 virtual ~QAccessibleActionInterface();
238 virtual QStringList actionNames()
const = 0;
239 virtual QString localizedActionName(
const QString &name)
const;
240 virtual QString localizedActionDescription(
const QString &name)
const;
241 virtual void doAction(
const QString &actionName) = 0;
242 virtual QStringList keyBindingsForAction(
const QString &actionName)
const = 0;
244 static const QString &pressAction();
245 static const QString &increaseAction();
246 static const QString &decreaseAction();
247 static const QString &showMenuAction();
248 static const QString &setFocusAction();
249 static const QString &showOnScreenAction();
250 static const QString &toggleAction();
251 static QString scrollLeftAction();
252 static QString scrollRightAction();
253 static QString scrollUpAction();
254 static QString scrollDownAction();
255 static QString nextPageAction();
256 static QString previousPageAction();
259class Q_GUI_EXPORT QAccessibleImageInterface
262 virtual ~QAccessibleImageInterface();
264 virtual QString imageDescription()
const = 0;
265 virtual QSize imageSize()
const = 0;
266 virtual QPoint imagePosition()
const = 0;
269class Q_GUI_EXPORT QAccessibleHyperlinkInterface
272 virtual ~QAccessibleHyperlinkInterface();
274 virtual QString anchor()
const = 0;
275 virtual QString anchorTarget()
const = 0;
276 virtual int startIndex()
const = 0;
277 virtual int endIndex()
const = 0;
278 virtual bool isValid()
const = 0;
281class Q_GUI_EXPORT QAccessibleSelectionInterface
284 virtual ~QAccessibleSelectionInterface();
286 virtual int selectedItemCount()
const = 0;
287 virtual QList<QAccessibleInterface*> selectedItems()
const = 0;
288 virtual QAccessibleInterface* selectedItem(
int selectionIndex)
const;
289 virtual bool isSelected(QAccessibleInterface *childItem)
const;
290 virtual bool select(QAccessibleInterface *childItem) = 0;
291 virtual bool unselect(QAccessibleInterface *childItem) = 0;
292 virtual bool selectAll() = 0;
293 virtual bool clear() = 0;
296class Q_GUI_EXPORT QAccessibleAttributesInterface
299 virtual ~QAccessibleAttributesInterface();
300 virtual QList<QAccessible::Attribute> attributeKeys()
const = 0;
301 virtual QVariant attributeValue(QAccessible::Attribute key)
const = 0;
304class Q_GUI_EXPORT QAccessibleViewportInterface
307 virtual ~QAccessibleViewportInterface();
309 virtual QSizeF contentSize()
const = 0;
310 virtual QPointF position()
const = 0;
311 virtual QSizeF viewportSize()
const = 0;
312 virtual bool isIndexed()
const = 0;
313 virtual void setPosition(
const QPointF &position) = 0;
317class Q_GUI_EXPORT QAccessibleEvent
319 Q_DISABLE_COPY(QAccessibleEvent)
322 inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
323 : m_type(typ), m_object(obj), m_child(-1)
325 if (m_type != QAccessible::ObjectDestroyed)
329 Q_ASSERT(m_type != QAccessible::ValueChanged);
330 Q_ASSERT(m_type != QAccessible::StateChanged);
331 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
332 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
333 Q_ASSERT(m_type != QAccessible::TextInserted);
334 Q_ASSERT(m_type != QAccessible::TextRemoved);
335 Q_ASSERT(m_type != QAccessible::TextUpdated);
336 Q_ASSERT(m_type != QAccessible::TableModelChanged);
337 Q_ASSERT(m_type != QAccessible::Announcement);
340 inline QAccessibleEvent(QAccessibleInterface *iface, QAccessible::Event typ)
344 Q_ASSERT(m_type != QAccessible::ValueChanged);
345 Q_ASSERT(m_type != QAccessible::StateChanged);
346 Q_ASSERT(m_type != QAccessible::TextCaretMoved);
347 Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
348 Q_ASSERT(m_type != QAccessible::TextInserted);
349 Q_ASSERT(m_type != QAccessible::TextRemoved);
350 Q_ASSERT(m_type != QAccessible::TextUpdated);
351 Q_ASSERT(m_type != QAccessible::TableModelChanged);
352 Q_ASSERT(m_type != QAccessible::Announcement);
353 m_uniqueId = QAccessible::uniqueId(iface);
354 m_object = iface->object();
357 virtual ~QAccessibleEvent();
359 QAccessible::Event type()
const {
return m_type; }
360 QObject *object()
const {
return m_object; }
361 QAccessible::Id uniqueId()
const;
363 void setChild(
int chld);
364 int child()
const {
return m_child; }
366 virtual QAccessibleInterface *accessibleInterface()
const;
369 QAccessible::Event m_type;
373 QAccessible::Id m_uniqueId;
376 friend class QTestAccessibility;
379class Q_GUI_EXPORT QAccessibleStateChangeEvent :
public QAccessibleEvent
382 inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
383 : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
385 m_type = QAccessible::StateChanged;
387 inline QAccessibleStateChangeEvent(QAccessibleInterface *iface, QAccessible::State state)
388 : QAccessibleEvent(iface, QAccessible::InvalidEvent), m_changedStates(state)
390 m_type = QAccessible::StateChanged;
392 ~QAccessibleStateChangeEvent();
394 QAccessible::State changedStates()
const {
395 return m_changedStates;
399 QAccessible::State m_changedStates;
403class Q_GUI_EXPORT QAccessibleTextCursorEvent :
public QAccessibleEvent
406 inline QAccessibleTextCursorEvent(QObject *obj,
int cursorPos)
407 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
408 , m_cursorPosition(cursorPos)
410 m_type = QAccessible::TextCaretMoved;
412 inline QAccessibleTextCursorEvent(QAccessibleInterface *iface,
int cursorPos)
413 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
414 , m_cursorPosition(cursorPos)
416 m_type = QAccessible::TextCaretMoved;
419 ~QAccessibleTextCursorEvent();
421 void setCursorPosition(
int position) { m_cursorPosition = position; }
422 int cursorPosition()
const {
return m_cursorPosition; }
425 int m_cursorPosition;
429class Q_GUI_EXPORT QAccessibleTextSelectionEvent :
public QAccessibleTextCursorEvent
432 inline QAccessibleTextSelectionEvent(QObject *obj,
int start,
int end)
433 : QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
434 , m_selectionStart(start), m_selectionEnd(end)
436 m_type = QAccessible::TextSelectionChanged;
438 inline QAccessibleTextSelectionEvent(QAccessibleInterface *iface,
int start,
int end)
439 : QAccessibleTextCursorEvent(iface, (start == -1) ? 0 : end)
440 , m_selectionStart(start), m_selectionEnd(end)
442 m_type = QAccessible::TextSelectionChanged;
445 ~QAccessibleTextSelectionEvent();
447 void setSelection(
int start,
int end) {
448 m_selectionStart = start;
449 m_selectionEnd = end;
452 int selectionStart()
const {
return m_selectionStart; }
453 int selectionEnd()
const {
return m_selectionEnd; }
456 int m_selectionStart;
460class Q_GUI_EXPORT QAccessibleTextInsertEvent :
public QAccessibleTextCursorEvent
463 inline QAccessibleTextInsertEvent(QObject *obj,
int position,
const QString &text)
464 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
465 , m_position(position), m_text(text)
467 m_type = QAccessible::TextInserted;
469 inline QAccessibleTextInsertEvent(QAccessibleInterface *iface,
int position,
const QString &text)
470 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
471 , m_position(position), m_text(text)
473 m_type = QAccessible::TextInserted;
476 ~QAccessibleTextInsertEvent();
478 QString textInserted()
const {
481 int changePosition()
const {
490class Q_GUI_EXPORT QAccessibleTextRemoveEvent :
public QAccessibleTextCursorEvent
493 inline QAccessibleTextRemoveEvent(QObject *obj,
int position,
const QString &text)
494 : QAccessibleTextCursorEvent(obj, position)
495 , m_position(position), m_text(text)
497 m_type = QAccessible::TextRemoved;
499 inline QAccessibleTextRemoveEvent(QAccessibleInterface *iface,
int position,
const QString &text)
500 : QAccessibleTextCursorEvent(iface, position)
501 , m_position(position), m_text(text)
503 m_type = QAccessible::TextRemoved;
506 ~QAccessibleTextRemoveEvent();
508 QString textRemoved()
const {
511 int changePosition()
const {
520class Q_GUI_EXPORT QAccessibleTextUpdateEvent :
public QAccessibleTextCursorEvent
523 inline QAccessibleTextUpdateEvent(QObject *obj,
int position,
const QString &oldText,
const QString &text)
524 : QAccessibleTextCursorEvent(obj, position +
int(text.size()))
525 , m_position(position), m_oldText(oldText), m_text(text)
527 m_type = QAccessible::TextUpdated;
529 inline QAccessibleTextUpdateEvent(QAccessibleInterface *iface,
int position,
const QString &oldText,
const QString &text)
530 : QAccessibleTextCursorEvent(iface, position +
int(text.size()))
531 , m_position(position), m_oldText(oldText), m_text(text)
533 m_type = QAccessible::TextUpdated;
536 ~QAccessibleTextUpdateEvent();
538 QString textRemoved()
const {
541 QString textInserted()
const {
544 int changePosition()
const {
554class Q_GUI_EXPORT QAccessibleValueChangeEvent :
public QAccessibleEvent
557 inline QAccessibleValueChangeEvent(QObject *obj,
const QVariant &val)
558 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
561 m_type = QAccessible::ValueChanged;
563 inline QAccessibleValueChangeEvent(QAccessibleInterface *iface,
const QVariant &val)
564 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
567 m_type = QAccessible::ValueChanged;
570 ~QAccessibleValueChangeEvent();
572 void setValue(
const QVariant & val) { m_value= val; }
573 QVariant value()
const {
return m_value; }
579class Q_GUI_EXPORT QAccessibleTableModelChangeEvent :
public QAccessibleEvent
582 enum ModelChangeType {
591 inline QAccessibleTableModelChangeEvent(QObject *obj, ModelChangeType changeType)
592 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
593 , m_modelChangeType(changeType)
594 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
596 m_type = QAccessible::TableModelChanged;
598 inline QAccessibleTableModelChangeEvent(QAccessibleInterface *iface, ModelChangeType changeType)
599 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
600 , m_modelChangeType(changeType)
601 , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1)
603 m_type = QAccessible::TableModelChanged;
606 ~QAccessibleTableModelChangeEvent();
608 void setModelChangeType(ModelChangeType changeType) { m_modelChangeType = changeType; }
609 ModelChangeType modelChangeType()
const {
return m_modelChangeType; }
611 void setFirstRow(
int row) { m_firstRow = row; }
612 void setFirstColumn(
int col) { m_firstColumn = col; }
613 void setLastRow(
int row) { m_lastRow = row; }
614 void setLastColumn(
int col) { m_lastColumn = col; }
615 int firstRow()
const {
return m_firstRow; }
616 int firstColumn()
const {
return m_firstColumn; }
617 int lastRow()
const {
return m_lastRow; }
618 int lastColumn()
const {
return m_lastColumn; }
621 ModelChangeType m_modelChangeType;
628class Q_GUI_EXPORT QAccessibleAnnouncementEvent :
public QAccessibleEvent
631 explicit QAccessibleAnnouncementEvent(QObject *object,
const QString &message)
632 : QAccessibleEvent(object, QAccessible::InvalidEvent)
634 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
636 m_type = QAccessible::Announcement;
639 explicit QAccessibleAnnouncementEvent(QAccessibleInterface *iface,
const QString &message)
640 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
642 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
644 m_type = QAccessible::Announcement;
647 ~QAccessibleAnnouncementEvent() override;
649 QString message()
const {
return m_message; }
650 QAccessible::AnnouncementPoliteness politeness()
const {
return m_politeness; }
651 void setPoliteness(QAccessible::AnnouncementPoliteness politeness)
652 { m_politeness = politeness; }
656 QAccessible::AnnouncementPoliteness m_politeness;
660#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
661Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
664Q_GUI_EXPORT
const char *qAccessibleRoleString(QAccessible::Role role);
665Q_GUI_EXPORT
const char *qAccessibleEventString(QAccessible::Event event);
666Q_GUI_EXPORT QString qAccessibleLocalizedActionDescription(
const QString &actionName);
668#ifndef QT_NO_DEBUG_STREAM
669Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleInterface *iface);
670Q_GUI_EXPORT QDebug operator<<(QDebug d,
const QAccessibleEvent &ev);
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)