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
itemviews_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 ACCESSIBLE_ITEMVIEWS_H
5#define ACCESSIBLE_ITEMVIEWS_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 "QtCore/qpointer.h"
20#include <QtGui/qaccessible.h>
21#include <QtWidgets/qaccessiblewidget.h>
22#include <QtWidgets/qabstractitemview.h>
23#include <QtWidgets/qheaderview.h>
24
26
28
29#if QT_CONFIG(accessibility)
30
31class QAccessibleTableCell;
32class QAccessibleTableHeaderCell;
33
34class QAccessibleTable :public QAccessibleTableInterface, public QAccessibleSelectionInterface, public QAccessibleObject
35{
36public:
37 explicit QAccessibleTable(QWidget *w);
38 bool isValid() const override;
39
40 QAccessible::Role role() const override;
41 QAccessible::State state() const override;
42 QString text(QAccessible::Text t) const override;
43 QRect rect() const override;
44
45 QAccessibleInterface *childAt(int x, int y) const override;
46 QAccessibleInterface *focusChild() const override;
47 int childCount() const override;
48 int indexOfChild(const QAccessibleInterface *) const override;
49
50 QAccessibleInterface *parent() const override;
51 QAccessibleInterface *child(int index) const override;
52
53 void *interface_cast(QAccessible::InterfaceType t) override;
54
55 // table interface
56 virtual QAccessibleInterface *cellAt(int row, int column) const override;
57 virtual QAccessibleInterface *caption() const override;
58 virtual QAccessibleInterface *summary() const override;
59 virtual QString columnDescription(int column) const override;
60 virtual QString rowDescription(int row) const override;
61 virtual int columnCount() const override;
62 virtual int rowCount() const override;
63
64 // selection
65 virtual int selectedCellCount() const override;
66 virtual int selectedColumnCount() const override;
67 virtual int selectedRowCount() const override;
68 virtual QList<QAccessibleInterface*> selectedCells() const override;
69 virtual QList<int> selectedColumns() const override;
70 virtual QList<int> selectedRows() const override;
71 virtual bool isColumnSelected(int column) const override;
72 virtual bool isRowSelected(int row) const override;
73 virtual bool selectRow(int row) override;
74 virtual bool selectColumn(int column) override;
75 virtual bool unselectRow(int row) override;
76 virtual bool unselectColumn(int column) override;
77
78 // QAccessibleSelectionInterface
79 virtual int selectedItemCount() const override;
80 virtual QList<QAccessibleInterface*> selectedItems() const override;
81 virtual bool isSelected(QAccessibleInterface *childCell) const override;
82 virtual bool select(QAccessibleInterface *childCell) override;
83 virtual bool unselect(QAccessibleInterface *childCell) override;
84 virtual bool selectAll() override;
85 virtual bool clear() override;
86
87 QAbstractItemView *view() const;
88
89 void modelChange(QAccessibleTableModelChangeEvent *event) override;
90
91protected:
92 inline QAccessible::Role cellRole() const {
93 switch (m_role) {
94 case QAccessible::List:
95 return QAccessible::ListItem;
96 case QAccessible::Table:
97 return QAccessible::Cell;
98 case QAccessible::Tree:
99 return QAccessible::TreeItem;
100 default:
101 Q_ASSERT(0);
102 }
103 return QAccessible::NoRole;
104 }
105
106 QHeaderView *horizontalHeader() const;
107 QHeaderView *verticalHeader() const;
108
109 // maybe vector
110 typedef QHash<int, QAccessible::Id> ChildCache;
111 mutable ChildCache childToId;
112
113 virtual ~QAccessibleTable();
114
115private:
116 // the child index for a model index
117 inline int logicalIndex(const QModelIndex &index) const;
118 QAccessible::Role m_role;
119};
120
121#if QT_CONFIG(treeview)
122class QAccessibleTree :public QAccessibleTable
123{
124public:
125 explicit QAccessibleTree(QWidget *w)
126 : QAccessibleTable(w)
127 {}
128
129
130 QAccessibleInterface *childAt(int x, int y) const override;
131 QAccessibleInterface *focusChild() const override;
132 int childCount() const override;
133 QAccessibleInterface *child(int index) const override;
134
135 int indexOfChild(const QAccessibleInterface *) const override;
136
137 int rowCount() const override;
138
139 // table interface
140 QAccessibleInterface *cellAt(int row, int column) const override;
141 QString rowDescription(int row) const override;
142 bool isRowSelected(int row) const override;
143 bool selectRow(int row) override;
144
145private:
146 QModelIndex indexFromLogical(int row, int column = 0) const;
147};
148#endif
149
150class QAccessibleTableCell: public QAccessibleInterface, public QAccessibleTableCellInterface, public QAccessibleActionInterface
151{
152public:
153 QAccessibleTableCell(QAbstractItemView *view, const QModelIndex &m_index, QAccessible::Role role);
154
155 void *interface_cast(QAccessible::InterfaceType t) override;
156 QObject *object() const override { return nullptr; }
157 QAccessible::Role role() const override;
158 QAccessible::State state() const override;
159 QRect rect() const override;
160 bool isValid() const override;
161
162 QAccessibleInterface *childAt(int, int) const override { return nullptr; }
163 int childCount() const override { return 0; }
164 int indexOfChild(const QAccessibleInterface *) const override { return -1; }
165
166 QString text(QAccessible::Text t) const override;
167 void setText(QAccessible::Text t, const QString &text) override;
168
169 QAccessibleInterface *parent() const override;
170 QAccessibleInterface *child(int) const override;
171
172 // cell interface
173 virtual int columnExtent() const override;
174 virtual QList<QAccessibleInterface*> columnHeaderCells() const override;
175 virtual int columnIndex() const override;
176 virtual int rowExtent() const override;
177 virtual QList<QAccessibleInterface*> rowHeaderCells() const override;
178 virtual int rowIndex() const override;
179 virtual bool isSelected() const override;
180 virtual QAccessibleInterface* table() const override;
181
182 //action interface
183 virtual QStringList actionNames() const override;
184 virtual void doAction(const QString &actionName) override;
185 virtual QStringList keyBindingsForAction(const QString &actionName) const override;
186
187private:
188 QHeaderView *verticalHeader() const;
189 QHeaderView *horizontalHeader() const;
190 QPointer<QAbstractItemView > view;
191 QPersistentModelIndex m_index;
192 QAccessible::Role m_role;
193
194 void selectCell();
195 void unselectCell();
196
197friend class QAccessibleTable;
198#if QT_CONFIG(treeview)
199friend class QAccessibleTree;
200#endif
201};
202
203
204class QAccessibleTableHeaderCell: public QAccessibleInterface
205{
206public:
207 // For header cells, pass the header view in addition
208 QAccessibleTableHeaderCell(QAbstractItemView *view, int index, Qt::Orientation orientation);
209
210 QObject *object() const override { return nullptr; }
211 QAccessible::Role role() const override;
212 QAccessible::State state() const override;
213 QRect rect() const override;
214 bool isValid() const override;
215
216 QAccessibleInterface *childAt(int, int) const override { return nullptr; }
217 int childCount() const override { return 0; }
218 int indexOfChild(const QAccessibleInterface *) const override { return -1; }
219
220 QString text(QAccessible::Text t) const override;
221 void setText(QAccessible::Text t, const QString &text) override;
222
223 QAccessibleInterface *parent() const override;
224 QAccessibleInterface *child(int index) const override;
225
226private:
227 QHeaderView *headerView() const;
228
229 QPointer<QAbstractItemView> view;
230 int index;
231 Qt::Orientation orientation;
232
233friend class QAccessibleTable;
234#if QT_CONFIG(treeview)
235friend class QAccessibleTree;
236#endif
237};
238
239// This is the corner button on the top left of a table.
240// It can be used to select all cells or it is not active at all.
241// For now it is ignored.
242class QAccessibleTableCornerButton: public QAccessibleInterface
243{
244public:
245 QAccessibleTableCornerButton(QAbstractItemView *view_)
246 :view(view_)
247 {}
248
249 QObject *object() const override { return nullptr; }
250 QAccessible::Role role() const override { return QAccessible::Pane; }
251 QAccessible::State state() const override { return QAccessible::State(); }
252 QRect rect() const override { return QRect(); }
253 bool isValid() const override { return true; }
254
255 QAccessibleInterface *childAt(int, int) const override { return nullptr; }
256 int childCount() const override { return 0; }
257 int indexOfChild(const QAccessibleInterface *) const override { return -1; }
258
259 QString text(QAccessible::Text) const override { return QString(); }
260 void setText(QAccessible::Text, const QString &) override {}
261
262 QAccessibleInterface *parent() const override {
263 return QAccessible::queryAccessibleInterface(view);
264 }
265 QAccessibleInterface *child(int) const override {
266 return nullptr;
267 }
268
269private:
270 QPointer<QAbstractItemView> view;
271};
272
273
274#endif // QT_CONFIG(accessibility)
275
277
278#endif // ACCESSIBLE_ITEMVIEWS_H
The QAbstractItemView class provides the basic functionality for item view classes.
\inmodule QtGui
The QHeaderView class provides a header row or header column for item views.
Definition qheaderview.h:18
\inmodule QtCore
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
b clear()
QString text
rect
[4]
else opt state
[0]
Combined button and popup list for selecting options.
Orientation
Definition qnamespace.h:98
static jboolean selectAll(JNIEnv *, jobject)
GLint GLint GLint GLint GLint x
[0]
GLfloat GLfloat GLfloat w
[0]
GLuint index
[2]
GLuint object
[3]
GLint y
GLenum GLenum GLsizei void GLsizei void * column
struct _cl_event * event
GLdouble GLdouble t
Definition qopenglext.h:243
GLenum GLenum GLsizei void * row
GLenum GLenum GLsizei void * table
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
#define QT_REQUIRE_CONFIG(feature)
selection select(topLeft, bottomRight)
QLayoutItem * child
[0]
insertRed setText("insert red text")
QQuickView * view
[0]