Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qaccessiblewidgets_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 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#ifndef QACCESSIBLEWIDGETS_H
5#define QACCESSIBLEWIDGETS_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include <QtWidgets/qaccessiblewidget.h>
20
21#if QT_CONFIG(accessibility)
22
23#include <QtCore/QPointer>
24
26
27class QTextEdit;
28class QStackedWidget;
29class QToolBox;
30class QMdiArea;
31class QMdiSubWindow;
32class QRubberBand;
33class QTextBrowser;
34class QCalendarWidget;
36class QDockWidget;
38class QMainWindow;
39class QPlainTextEdit;
40class QTextCursor;
41class QTextDocument;
42
43#ifndef QT_NO_CURSOR
44class QAccessibleTextWidget : public QAccessibleWidget,
45 public QAccessibleTextInterface,
46 public QAccessibleEditableTextInterface
47{
48public:
49 QAccessibleTextWidget(QWidget *o, QAccessible::Role r = QAccessible::EditableText, const QString &name = QString());
50
51 QAccessible::State state() const override;
52
53 // QAccessibleTextInterface
54 // selection
55 void selection(int selectionIndex, int *startOffset, int *endOffset) const override;
56 int selectionCount() const override;
57 void addSelection(int startOffset, int endOffset) override;
58 void removeSelection(int selectionIndex) override;
59 void setSelection(int selectionIndex, int startOffset, int endOffset) override;
60
61 // cursor
62 int cursorPosition() const override;
63 void setCursorPosition(int position) override;
64
65 // text
66 QString text(int startOffset, int endOffset) const override;
67 QString textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType,
68 int *startOffset, int *endOffset) const override;
69 QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType,
70 int *startOffset, int *endOffset) const override;
71 QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType,
72 int *startOffset, int *endOffset) const override;
73 int characterCount() const override;
74
75 // character <-> geometry
76 QRect characterRect(int offset) const override;
77 int offsetAtPoint(const QPoint &point) const override;
78
79 QString attributes(int offset, int *startOffset, int *endOffset) const override;
80
81 // QAccessibleEditableTextInterface
82 void deleteText(int startOffset, int endOffset) override;
83 void insertText(int offset, const QString &text) override;
84 void replaceText(int startOffset, int endOffset, const QString &text) override;
85
86 using QAccessibleWidget::text;
87
88protected:
89 QTextCursor textCursorForRange(int startOffset, int endOffset) const;
90 virtual QPoint scrollBarPosition() const;
91 // return the current text cursor at the caret position including a potential selection
92 virtual QTextCursor textCursor() const = 0;
93 virtual void setTextCursor(const QTextCursor &) = 0;
94 virtual QTextDocument *textDocument() const = 0;
95 virtual QWidget *viewport() const = 0;
96};
97
98#if QT_CONFIG(textedit)
99class QAccessiblePlainTextEdit : public QAccessibleTextWidget
100{
101public:
102 explicit QAccessiblePlainTextEdit(QWidget *o);
103
104 QString text(QAccessible::Text t) const override;
105 void setText(QAccessible::Text t, const QString &text) override;
106 QAccessible::State state() const override;
107
108 void *interface_cast(QAccessible::InterfaceType t) override;
109
110 // QAccessibleTextInterface
111 void scrollToSubstring(int startIndex, int endIndex) override;
112
113 using QAccessibleTextWidget::text;
114
115protected:
116 QPlainTextEdit *plainTextEdit() const;
117
118 QPoint scrollBarPosition() const override;
119 QTextCursor textCursor() const override;
120 void setTextCursor(const QTextCursor &textCursor) override;
121 QTextDocument *textDocument() const override;
122 QWidget *viewport() const override;
123};
124
125class QAccessibleTextEdit : public QAccessibleTextWidget
126{
127public:
128 explicit QAccessibleTextEdit(QWidget *o);
129
130 QString text(QAccessible::Text t) const override;
131 void setText(QAccessible::Text t, const QString &text) override;
132 QAccessible::State state() const override;
133
134 void *interface_cast(QAccessible::InterfaceType t) override;
135
136 // QAccessibleTextInterface
137 void scrollToSubstring(int startIndex, int endIndex) override;
138
139 using QAccessibleTextWidget::text;
140
141protected:
142 QTextEdit *textEdit() const;
143
144 QPoint scrollBarPosition() const override;
145 QTextCursor textCursor() const override;
146 void setTextCursor(const QTextCursor &textCursor) override;
147 QTextDocument *textDocument() const override;
148 QWidget *viewport() const override;
149};
150#endif // QT_CONFIG(textedit)
151#endif //QT_NO_CURSOR
152
153class QAccessibleStackedWidget : public QAccessibleWidget
154{
155public:
156 explicit QAccessibleStackedWidget(QWidget *widget);
157
158 QAccessibleInterface *childAt(int x, int y) const override;
159 int childCount() const override;
160 int indexOfChild(const QAccessibleInterface *child) const override;
161 QAccessibleInterface *child(int index) const override;
162
163protected:
164 QStackedWidget *stackedWidget() const;
165};
166
167class QAccessibleToolBox : public QAccessibleWidget
168{
169public:
170 explicit QAccessibleToolBox(QWidget *widget);
171
172// FIXME we currently expose the toolbox but it is not keyboard navigatable
173// and the accessible hierarchy is not exactly beautiful.
174// int childCount() const;
175// QAccessibleInterface *child(int index) const;
176// int indexOfChild(const QAccessibleInterface *child) const;
177
178protected:
179 QToolBox *toolBox() const;
180};
181
182#if QT_CONFIG(mdiarea)
183class QAccessibleMdiArea : public QAccessibleWidget
184{
185public:
186 explicit QAccessibleMdiArea(QWidget *widget);
187
188 int childCount() const override;
189 QAccessibleInterface *child(int index) const override;
190 int indexOfChild(const QAccessibleInterface *child) const override;
191
192protected:
193 QMdiArea *mdiArea() const;
194};
195
196class QAccessibleMdiSubWindow : public QAccessibleWidget
197{
198public:
199 explicit QAccessibleMdiSubWindow(QWidget *widget);
200
201 QString text(QAccessible::Text textType) const override;
202 void setText(QAccessible::Text textType, const QString &text) override;
203 QAccessible::State state() const override;
204 int childCount() const override;
205 QAccessibleInterface *child(int index) const override;
206 int indexOfChild(const QAccessibleInterface *child) const override;
207 QRect rect() const override;
208
209protected:
210 QMdiSubWindow *mdiSubWindow() const;
211};
212#endif // QT_CONFIG(mdiarea)
213
214#if QT_CONFIG(dialogbuttonbox)
215class QAccessibleDialogButtonBox : public QAccessibleWidget
216{
217public:
218 explicit QAccessibleDialogButtonBox(QWidget *widget);
219};
220#endif
221
222#if QT_CONFIG(textbrowser) && !defined(QT_NO_CURSOR)
223class QAccessibleTextBrowser : public QAccessibleTextEdit
224{
225public:
226 explicit QAccessibleTextBrowser(QWidget *widget);
227
228 QAccessible::Role role() const override;
229};
230#endif // QT_CONFIG(textbrowser) && QT_NO_CURSOR
231
232#if QT_CONFIG(calendarwidget)
233class QAccessibleCalendarWidget : public QAccessibleWidget
234{
235public:
236 explicit QAccessibleCalendarWidget(QWidget *widget);
237
238 int childCount() const override;
239 int indexOfChild(const QAccessibleInterface *child) const override;
240
241 QAccessibleInterface *child(int index) const override;
242
243protected:
244 QCalendarWidget *calendarWidget() const;
245
246private:
247 QAbstractItemView *calendarView() const;
248 QWidget *navigationBar() const;
249};
250#endif // QT_CONFIG(calendarwidget)
251
252#if QT_CONFIG(dockwidget)
253class QAccessibleDockWidget: public QAccessibleWidget
254{
255public:
256 explicit QAccessibleDockWidget(QWidget *widget);
257 QAccessibleInterface *child(int index) const override;
258 int indexOfChild(const QAccessibleInterface *child) const override;
259 int childCount() const override;
260 QRect rect () const override;
261 QString text(QAccessible::Text t) const override;
262
263 QDockWidget *dockWidget() const;
264protected:
265 QDockWidgetLayout *dockWidgetLayout() const;
266};
267
268#endif // QT_CONFIG(dockwidget)
269
270#if QT_CONFIG(mainwindow)
271class QAccessibleMainWindow : public QAccessibleWidget
272{
273public:
274 explicit QAccessibleMainWindow(QWidget *widget);
275
276 QAccessibleInterface *child(int index) const override;
277 int childCount() const override;
278 int indexOfChild(const QAccessibleInterface *iface) const override;
279 QAccessibleInterface *childAt(int x, int y) const override;
280 QMainWindow *mainWindow() const;
281
282};
283#endif // QT_CONFIG(mainwindow)
284
285#endif // QT_CONFIG(accessibility)
286
288
289#endif // QACESSIBLEWIDGETS_H
The QAbstractItemView class provides the basic functionality for item view classes.
\inmodule QtGui
The QCalendarWidget class provides a monthly based calendar widget allowing the user to select a date...
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-l...
Definition qdockwidget.h:20
The QMainWindow class provides a main application window.
Definition qmainwindow.h:25
The QMdiArea widget provides an area in which MDI windows are displayed.
Definition qmdiarea.h:21
The QMdiSubWindow class provides a subwindow class for QMdiArea.
The QPlainTextEdit class provides a widget that is used to edit and display plain text.
\inmodule QtCore\reentrant
Definition qpoint.h:25
\inmodule QtCore\reentrant
Definition qrect.h:30
The QRubberBand class provides a rectangle or line that can indicate a selection or a boundary.
Definition qrubberband.h:18
The QStackedWidget class provides a stack of widgets where only one widget is visible at a time.
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTextBrowser class provides a rich text browser with hypertext navigation.
\reentrant \inmodule QtGui
Definition qtextcursor.h:30
\reentrant \inmodule QtGui
The QTextEdit class provides a widget that is used to edit and display both plain and rich text.
Definition qtextedit.h:27
The QToolBox class provides a column of tabbed widget items.
Definition qtoolbox.h:18
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
QOpenGLWidget * widget
[1]
QString text
rect
[4]
else opt state
[0]
Combined button and popup list for selecting options.
static jboolean setSelection(JNIEnv *, jobject, jint start, jint end)
GLint GLint GLint GLint GLint x
[0]
GLuint index
[2]
GLboolean r
[2]
GLenum GLuint GLintptr offset
GLuint name
GLint y
GLdouble GLdouble t
Definition qopenglext.h:243
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
QGraphicsWidget * textEdit
view viewport() -> scroll(dx, dy, deviceRect)
QItemSelection * selection
[0]
QLayoutItem * child
[0]
insertRed setText("insert red text")
QDockWidget * dockWidget
[0]
edit textCursor().insertText(text)
[0]