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 QACCESSIBLEWIDGET_H
5#define QACCESSIBLEWIDGET_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtGui/qaccessibleobject.h>
9#include <QtCore/qlist.h>
10
11QT_BEGIN_NAMESPACE
12
13
14#if QT_CONFIG(accessibility)
15
16class QAccessibleWidgetPrivate;
17
18class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject,
19 public QAccessibleActionInterface
20{
21public:
22 explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client);
23 explicit QAccessibleWidget(QWidget *o, QAccessible::Role r, const QString& name);
24 bool isValid() const override;
25
26 QWindow *window() const override;
27 int childCount() const override;
28 int indexOfChild(const QAccessibleInterface *child) const override;
29 QList<std::pair<QAccessibleInterface *, QAccessible::Relation>>
30 relations(QAccessible::Relation match = QAccessible::AllRelations) const override;
31 QAccessibleInterface *focusChild() const override;
32
33 QRect rect() const override;
34
35 QAccessibleInterface *parent() const override;
36 QAccessibleInterface *child(int index) const override;
37
38 QString text(QAccessible::Text t) const override;
39 QAccessible::Role role() const override;
40 QAccessible::State state() const override;
41
42 QColor foregroundColor() const override;
43 QColor backgroundColor() const override;
44
45 void *interface_cast(QAccessible::InterfaceType t) override;
46
47 // QAccessibleActionInterface
48 QStringList actionNames() const override;
49 void doAction(const QString &actionName) override;
50 QStringList keyBindingsForAction(const QString &actionName) const override;
51protected:
52 ~QAccessibleWidget();
53 QWidget *widget() const;
54 QObject *parentObject() const;
55
56 void addControllingSignal(const QString &signal);
57
58private:
59 QAccessibleWidgetPrivate *d;
60 Q_DISABLE_COPY(QAccessibleWidget)
61};
62
63class Q_WIDGETS_EXPORT QAccessibleWidgetV2 : public QAccessibleWidget,
64 public QAccessibleAttributesInterface
65{
66#ifdef Q_OS_INTEGRITY
67 // force instantiation to avoid error #2045
68 struct error2045 : QList<QAccessible::Attribute> {};
69#endif
70public:
71 explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role = QAccessible::Client);
72 explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role, const QString &name);
73
74protected:
75 ~QAccessibleWidgetV2() override;
76
77public:
78 void *interface_cast(QAccessible::InterfaceType t) override;
79
80 // QAccessibleAttributesInterface
81 QList<QAccessible::Attribute> attributeKeys() const override;
82 QVariant attributeValue(QAccessible::Attribute key) const override;
83
84private:
85 Q_DISABLE_COPY(QAccessibleWidgetV2)
86};
87
88#endif // QT_CONFIG(accessibility)
89
90QT_END_NAMESPACE
91
92#endif // QACCESSIBLEWIDGET_H
93

source code of qtbase/src/widgets/accessible/qaccessiblewidget.h