Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qaccessible.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
5#if 0
6// keep existing syncqt header working after the move of the class
7// into qaccessible_base
8#pragma qt_class(QAccessible)
9#endif
10
11#ifndef QACCESSIBLE_H
12#define QACCESSIBLE_H
13#include <QtGui/qtguiglobal.h>
14
15#if QT_CONFIG(accessibility)
16
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>
27
28QT_BEGIN_NAMESPACE
29
30class QDebug;
31class QAccessibleInterface;
32class QAccessibleEvent;
33class QWindow;
34class QTextCursor;
35
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;
49
50class Q_GUI_EXPORT QAccessibleInterface
51{
52 Q_DISABLE_COPY_MOVE(QAccessibleInterface)
53protected:
54 QAccessibleInterface() = default;
55 virtual ~QAccessibleInterface();
56
57public:
58 // check for valid pointers
59 virtual bool isValid() const = 0;
60 virtual QObject *object() const = 0;
61 virtual QWindow *window() const;
62
63 // relations
64 virtual QList<std::pair<QAccessibleInterface *, QAccessible::Relation>>
65 relations(QAccessible::Relation match = QAccessible::AllRelations) const;
66 virtual QAccessibleInterface *focusChild() const;
67
68 virtual QAccessibleInterface *childAt(int x, int y) const = 0;
69
70 // navigation, hierarchy
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;
75
76 // properties and state
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;
82
83 virtual QColor foregroundColor() const;
84 virtual QColor backgroundColor() const;
85
86 inline QAccessibleTextInterface *textInterface()
87 { return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); }
88
89 inline QAccessibleEditableTextInterface *editableTextInterface()
90 { return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); }
91
92 inline QAccessibleValueInterface *valueInterface()
93 { return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); }
94
95 inline QAccessibleActionInterface *actionInterface()
96 { return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); }
97
98 inline QAccessibleImageInterface *imageInterface()
99 { return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); }
100
101 inline QAccessibleTableInterface *tableInterface()
102 { return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); }
103
104 inline QAccessibleTableCellInterface *tableCellInterface()
105 { return reinterpret_cast<QAccessibleTableCellInterface *>(interface_cast(QAccessible::TableCellInterface)); }
106
107 inline QAccessibleHyperlinkInterface *hyperlinkInterface()
108 { return reinterpret_cast<QAccessibleHyperlinkInterface *>(interface_cast(QAccessible::HyperlinkInterface)); }
109
110 inline QAccessibleSelectionInterface *selectionInterface()
111 { return reinterpret_cast<QAccessibleSelectionInterface *>(interface_cast(QAccessible::SelectionInterface)); }
112
113 inline QAccessibleAttributesInterface *attributesInterface()
114 { return reinterpret_cast<QAccessibleAttributesInterface *>(interface_cast(QAccessible::AttributesInterface)); }
115
116 inline QAccessibleViewportInterface *viewportInterface()
117 { return reinterpret_cast<QAccessibleViewportInterface *>(interface_cast(QAccessible::ViewportInterface)); }
118
119 virtual void virtual_hook(int id, void *data);
120
121 virtual void *interface_cast(QAccessible::InterfaceType)
122 { return nullptr; }
123
124protected:
125 friend class QAccessibleCache;
126};
127
128class Q_GUI_EXPORT QAccessibleTextInterface
129{
130 Q_DISABLE_COPY_MOVE(QAccessibleTextInterface)
131public:
132 QAccessibleTextInterface() = default;
133 virtual ~QAccessibleTextInterface();
134
135 // selection
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;
141
142 // cursor
143 virtual int cursorPosition() const = 0;
144 virtual void setCursorPosition(int position) = 0;
145
146 // text
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;
155
156 // character <-> geometry
157 virtual QRect characterRect(int offset) const = 0;
158 virtual int offsetAtPoint(const QPoint &point) const = 0;
159
160 virtual void scrollToSubstring(int startIndex, int endIndex) = 0;
161 virtual QString attributes(int offset, int *startOffset, int *endOffset) const = 0;
162};
163
164class Q_GUI_EXPORT QAccessibleEditableTextInterface
165{
166 Q_DISABLE_COPY_MOVE(QAccessibleEditableTextInterface)
167public:
168 QAccessibleEditableTextInterface() = default;
169 virtual ~QAccessibleEditableTextInterface();
170
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;
174};
175
176class Q_GUI_EXPORT QAccessibleValueInterface
177{
178 Q_DISABLE_COPY_MOVE(QAccessibleValueInterface)
179public:
180 QAccessibleValueInterface() = default;
181 virtual ~QAccessibleValueInterface();
182
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;
188};
189
190class Q_GUI_EXPORT QAccessibleTableCellInterface
191{
192 Q_DISABLE_COPY_MOVE(QAccessibleTableCellInterface)
193public:
194 QAccessibleTableCellInterface() = default;
195 virtual ~QAccessibleTableCellInterface();
196
197 virtual bool isSelected() const = 0;
198
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;
205
206 virtual QAccessibleInterface* table() const = 0;
207};
208
209class Q_GUI_EXPORT QAccessibleTableInterface
210{
211 Q_DISABLE_COPY_MOVE(QAccessibleTableInterface)
212public:
213 QAccessibleTableInterface() = default;
214 virtual ~QAccessibleTableInterface();
215
216 virtual QAccessibleInterface *caption() const = 0;
217 virtual QAccessibleInterface *summary() const = 0;
218
219 virtual QAccessibleInterface *cellAt (int row, int column) const = 0;
220 virtual int selectedCellCount() const = 0;
221 virtual QList<QAccessibleInterface*> selectedCells() const = 0;
222
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;
237
238 virtual void modelChange(QAccessibleTableModelChangeEvent *event) = 0;
239
240protected:
241friend class QAbstractItemView;
242friend class QAbstractItemViewPrivate;
243};
244
245class Q_GUI_EXPORT QAccessibleActionInterface
246{
247 Q_DISABLE_COPY_MOVE(QAccessibleActionInterface)
248 Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface)
249public:
250 QAccessibleActionInterface() = default;
251 virtual ~QAccessibleActionInterface();
252
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;
258
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();
272};
273
274class Q_GUI_EXPORT QAccessibleImageInterface
275{
276 Q_DISABLE_COPY_MOVE(QAccessibleImageInterface)
277public:
278 QAccessibleImageInterface() = default;
279 virtual ~QAccessibleImageInterface();
280
281 virtual QString imageDescription() const = 0;
282 virtual QSize imageSize() const = 0;
283 virtual QPoint imagePosition() const = 0;
284};
285
286class Q_GUI_EXPORT QAccessibleHyperlinkInterface
287{
288 Q_DISABLE_COPY_MOVE(QAccessibleHyperlinkInterface)
289public:
290 QAccessibleHyperlinkInterface() = default;
291 virtual ~QAccessibleHyperlinkInterface();
292
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;
298};
299
300class Q_GUI_EXPORT QAccessibleSelectionInterface
301{
302 Q_DISABLE_COPY_MOVE(QAccessibleSelectionInterface)
303public:
304 QAccessibleSelectionInterface() = default;
305 virtual ~QAccessibleSelectionInterface();
306
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;
315};
316
317class Q_GUI_EXPORT QAccessibleAttributesInterface
318{
319 Q_DISABLE_COPY_MOVE(QAccessibleAttributesInterface)
320public:
321 QAccessibleAttributesInterface() = default;
322 virtual ~QAccessibleAttributesInterface();
323
324 virtual QList<QAccessible::Attribute> attributeKeys() const = 0;
325 virtual QVariant attributeValue(QAccessible::Attribute key) const = 0;
326};
327
328class Q_GUI_EXPORT QAccessibleViewportInterface
329{
330 Q_DISABLE_COPY_MOVE(QAccessibleViewportInterface)
331public:
332 QAccessibleViewportInterface() = default;
333 virtual ~QAccessibleViewportInterface();
334
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;
340};
341
342
343class Q_GUI_EXPORT QAccessibleEvent
344{
345 Q_DISABLE_COPY(QAccessibleEvent)
346public:
347
348 inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
349 : m_type(typ), m_object(obj), m_child(-1)
350 {
351 if (m_type != QAccessible::ObjectDestroyed)
352 Q_ASSERT(obj);
353 // All events below have a subclass of QAccessibleEvent.
354 // Use the subclass, since it's expected that it's possible to cast to that.
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);
364 }
365
366 inline QAccessibleEvent(QAccessibleInterface *iface, QAccessible::Event typ)
367 : m_type(typ)
368 {
369 Q_ASSERT(iface);
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();
381 }
382
383 virtual ~QAccessibleEvent();
384
385 QAccessible::Event type() const { return m_type; }
386 QObject *object() const { return m_object; }
387 QAccessible::Id uniqueId() const;
388
389 void setChild(int chld);
390 int child() const { return m_child; }
391
392 virtual QAccessibleInterface *accessibleInterface() const;
393
394protected:
395 QAccessible::Event m_type;
396 QObject *m_object;
397 union {
398 int m_child;
399 QAccessible::Id m_uniqueId;
400 };
401
402 friend class QTestAccessibility;
403};
404
405class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent
406{
407public:
408 inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
409 : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
410 {
411 m_type = QAccessible::StateChanged;
412 }
413 inline QAccessibleStateChangeEvent(QAccessibleInterface *iface, QAccessible::State state)
414 : QAccessibleEvent(iface, QAccessible::InvalidEvent), m_changedStates(state)
415 {
416 m_type = QAccessible::StateChanged;
417 }
418 ~QAccessibleStateChangeEvent();
419
420 QAccessible::State changedStates() const {
421 return m_changedStates;
422 }
423
424protected:
425 QAccessible::State m_changedStates;
426};
427
428// Update the cursor and optionally the selection.
429class Q_GUI_EXPORT QAccessibleTextCursorEvent : public QAccessibleEvent
430{
431public:
432 inline QAccessibleTextCursorEvent(QObject *obj, int cursorPos)
433 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
434 , m_cursorPosition(cursorPos)
435 {
436 m_type = QAccessible::TextCaretMoved;
437 }
438 inline QAccessibleTextCursorEvent(QAccessibleInterface *iface, int cursorPos)
439 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
440 , m_cursorPosition(cursorPos)
441 {
442 m_type = QAccessible::TextCaretMoved;
443 }
444
445 ~QAccessibleTextCursorEvent();
446
447 void setCursorPosition(int position) { m_cursorPosition = position; }
448 int cursorPosition() const { return m_cursorPosition; }
449
450protected:
451 int m_cursorPosition;
452};
453
454// Updates the cursor position simultaneously. By default the cursor is set to the end of the selection.
455class Q_GUI_EXPORT QAccessibleTextSelectionEvent : public QAccessibleTextCursorEvent
456{
457public:
458 inline QAccessibleTextSelectionEvent(QObject *obj, int start, int end)
459 : QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
460 , m_selectionStart(start), m_selectionEnd(end)
461 {
462 m_type = QAccessible::TextSelectionChanged;
463 }
464 inline QAccessibleTextSelectionEvent(QAccessibleInterface *iface, int start, int end)
465 : QAccessibleTextCursorEvent(iface, (start == -1) ? 0 : end)
466 , m_selectionStart(start), m_selectionEnd(end)
467 {
468 m_type = QAccessible::TextSelectionChanged;
469 }
470
471 ~QAccessibleTextSelectionEvent();
472
473 void setSelection(int start, int end) {
474 m_selectionStart = start;
475 m_selectionEnd = end;
476 }
477
478 int selectionStart() const { return m_selectionStart; }
479 int selectionEnd() const { return m_selectionEnd; }
480
481protected:
482 int m_selectionStart;
483 int m_selectionEnd;
484};
485
486class Q_GUI_EXPORT QAccessibleTextInsertEvent : public QAccessibleTextCursorEvent
487{
488public:
489 inline QAccessibleTextInsertEvent(QObject *obj, int position, const QString &text)
490 : QAccessibleTextCursorEvent(obj, position + int(text.size()))
491 , m_position(position), m_text(text)
492 {
493 m_type = QAccessible::TextInserted;
494 }
495 inline QAccessibleTextInsertEvent(QAccessibleInterface *iface, int position, const QString &text)
496 : QAccessibleTextCursorEvent(iface, position + int(text.size()))
497 , m_position(position), m_text(text)
498 {
499 m_type = QAccessible::TextInserted;
500 }
501
502 ~QAccessibleTextInsertEvent();
503
504 QString textInserted() const {
505 return m_text;
506 }
507 int changePosition() const {
508 return m_position;
509 }
510
511protected:
512 int m_position;
513 QString m_text;
514};
515
516class Q_GUI_EXPORT QAccessibleTextRemoveEvent : public QAccessibleTextCursorEvent
517{
518public:
519 inline QAccessibleTextRemoveEvent(QObject *obj, int position, const QString &text)
520 : QAccessibleTextCursorEvent(obj, position)
521 , m_position(position), m_text(text)
522 {
523 m_type = QAccessible::TextRemoved;
524 }
525 inline QAccessibleTextRemoveEvent(QAccessibleInterface *iface, int position, const QString &text)
526 : QAccessibleTextCursorEvent(iface, position)
527 , m_position(position), m_text(text)
528 {
529 m_type = QAccessible::TextRemoved;
530 }
531
532 ~QAccessibleTextRemoveEvent();
533
534 QString textRemoved() const {
535 return m_text;
536 }
537 int changePosition() const {
538 return m_position;
539 }
540
541protected:
542 int m_position;
543 QString m_text;
544};
545
546class Q_GUI_EXPORT QAccessibleTextUpdateEvent : public QAccessibleTextCursorEvent
547{
548public:
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)
552 {
553 m_type = QAccessible::TextUpdated;
554 }
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)
558 {
559 m_type = QAccessible::TextUpdated;
560 }
561
562 ~QAccessibleTextUpdateEvent();
563
564 QString textRemoved() const {
565 return m_oldText;
566 }
567 QString textInserted() const {
568 return m_text;
569 }
570 int changePosition() const {
571 return m_position;
572 }
573
574protected:
575 int m_position;
576 QString m_oldText;
577 QString m_text;
578};
579
580class Q_GUI_EXPORT QAccessibleValueChangeEvent : public QAccessibleEvent
581{
582public:
583 inline QAccessibleValueChangeEvent(QObject *obj, const QVariant &val)
584 : QAccessibleEvent(obj, QAccessible::InvalidEvent)
585 , m_value(val)
586 {
587 m_type = QAccessible::ValueChanged;
588 }
589 inline QAccessibleValueChangeEvent(QAccessibleInterface *iface, const QVariant &val)
590 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
591 , m_value(val)
592 {
593 m_type = QAccessible::ValueChanged;
594 }
595
596 ~QAccessibleValueChangeEvent();
597
598 void setValue(const QVariant & val) { m_value= val; }
599 QVariant value() const { return m_value; }
600
601protected:
602 QVariant m_value;
603};
604
605class Q_GUI_EXPORT QAccessibleTableModelChangeEvent : public QAccessibleEvent
606{
607public:
608 enum ModelChangeType {
609 ModelReset,
610 DataChanged,
611 RowsInserted,
612 ColumnsInserted,
613 RowsRemoved,
614 ColumnsRemoved
615 };
616
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)
621 {
622 m_type = QAccessible::TableModelChanged;
623 }
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)
628 {
629 m_type = QAccessible::TableModelChanged;
630 }
631
632 ~QAccessibleTableModelChangeEvent();
633
634 void setModelChangeType(ModelChangeType changeType) { m_modelChangeType = changeType; }
635 ModelChangeType modelChangeType() const { return m_modelChangeType; }
636
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; }
645
646protected:
647 ModelChangeType m_modelChangeType;
648 int m_firstRow;
649 int m_firstColumn;
650 int m_lastRow;
651 int m_lastColumn;
652};
653
654class Q_GUI_EXPORT QAccessibleAnnouncementEvent : public QAccessibleEvent
655{
656public:
657 explicit QAccessibleAnnouncementEvent(QObject *object, const QString &message)
658 : QAccessibleEvent(object, QAccessible::InvalidEvent)
659 , m_message(message)
660 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
661 {
662 m_type = QAccessible::Announcement;
663 }
664
665 explicit QAccessibleAnnouncementEvent(QAccessibleInterface *iface, const QString &message)
666 : QAccessibleEvent(iface, QAccessible::InvalidEvent)
667 , m_message(message)
668 , m_politeness(QAccessible::AnnouncementPoliteness::Polite)
669 {
670 m_type = QAccessible::Announcement;
671 }
672
673 ~QAccessibleAnnouncementEvent() override;
674
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; }
679
680protected:
681 QString m_message;
682 QAccessible::AnnouncementPoliteness m_politeness;
683};
684
685#ifndef Q_QDOC
686#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
687Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
688#endif
689
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);
693
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);
697#endif
698
699QT_END_NAMESPACE
700
701#endif // QT_CONFIG(accessibility)
702#endif // QACCESSIBLE_H
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)