6#include "private/qwidget_p.h"
10#if QT_CONFIG(itemviews)
11#include "itemviews_p.h"
14#if QT_CONFIG(toolbutton)
15#include <qtoolbutton.h>
17#if QT_CONFIG(treeview)
21#include <qaccessible.h>
23#if QT_CONFIG(accessibility)
27using namespace Qt::StringLiterals;
29QAccessibleInterface *qAccessibleFactory(
const QString &classname, QObject *object)
31 QAccessibleInterface *iface =
nullptr;
32 if (!object || !object->isWidgetType())
35 QWidget *widget =
static_cast<QWidget*>(object);
41 if (QWidgetPrivate::get(widget)->data.in_destructor)
45#if QT_CONFIG(lineedit)
46 }
else if (classname ==
"QLineEdit"_L1) {
47 if (widget->objectName() ==
"qt_spinbox_lineedit"_L1)
50 iface =
new QAccessibleLineEdit(widget);
52#if QT_CONFIG(combobox)
53 }
else if (classname ==
"QComboBox"_L1) {
54 iface =
new QAccessibleComboBox(widget);
57 }
else if (classname ==
"QAbstractSpinBox"_L1) {
58 iface =
new QAccessibleAbstractSpinBox(widget);
59 }
else if (classname ==
"QSpinBox"_L1) {
60 iface =
new QAccessibleSpinBox(widget);
61 }
else if (classname ==
"QDoubleSpinBox"_L1) {
62 iface =
new QAccessibleDoubleSpinBox(widget);
64#if QT_CONFIG(scrollbar)
65 }
else if (classname ==
"QScrollBar"_L1) {
66 iface =
new QAccessibleScrollBar(widget);
69 }
else if (classname ==
"QAbstractSlider"_L1) {
70 iface =
new QAccessibleAbstractSlider(widget);
71 }
else if (classname ==
"QSlider"_L1) {
72 iface =
new QAccessibleSlider(widget);
74#if QT_CONFIG(toolbutton)
75 }
else if (classname ==
"QToolButton"_L1) {
76 iface =
new QAccessibleToolButton(widget);
78#if QT_CONFIG(abstractbutton)
79 }
else if (classname ==
"QCheckBox"_L1
80 || classname ==
"QRadioButton"_L1
81 || classname ==
"QPushButton"_L1
82 || classname ==
"QAbstractButton"_L1) {
83 iface =
new QAccessibleButton(widget);
85 }
else if (classname ==
"QDialog"_L1) {
86 iface =
new QAccessibleWidgetV2(widget, QAccessible::Dialog);
87#if QT_CONFIG(messagebox)
88 }
else if (classname ==
"QMessageBox"_L1) {
89 iface =
new QAccessibleMessageBox(widget);
91#if QT_CONFIG(mainwindow)
92 }
else if (classname ==
"QMainWindow"_L1) {
93 iface =
new QAccessibleMainWindow(widget);
95 }
else if (classname ==
"QLabel"_L1 || classname ==
"QLCDNumber"_L1) {
96 iface =
new QAccessibleDisplay(widget);
97#if QT_CONFIG(groupbox)
98 }
else if (classname ==
"QGroupBox"_L1) {
99 iface =
new QAccessibleGroupBox(widget);
101 }
else if (classname ==
"QStatusBar"_L1) {
102 iface =
new QAccessibleDisplay(widget);
103#if QT_CONFIG(progressbar)
104 }
else if (classname ==
"QProgressBar"_L1) {
105 iface =
new QAccessibleProgressBar(widget);
107 }
else if (classname ==
"QToolBar"_L1) {
108 iface =
new QAccessibleWidgetV2(widget, QAccessible::ToolBar, widget->windowTitle());
109#if QT_CONFIG(menubar)
110 }
else if (classname ==
"QMenuBar"_L1) {
111 iface =
new QAccessibleMenuBar(widget);
114 }
else if (classname ==
"QMenu"_L1) {
115 iface =
new QAccessibleMenu(widget);
117#if QT_CONFIG(treeview)
118 }
else if (classname ==
"QTreeView"_L1) {
119 iface =
new QAccessibleTree(widget);
121#if QT_CONFIG(listview)
122 }
else if (classname ==
"QListView"_L1) {
123 iface =
new QAccessibleList(widget);
125#if QT_CONFIG(itemviews)
126 }
else if (classname ==
"QTableView"_L1) {
127 iface =
new QAccessibleTable(widget);
130 }
else if (classname ==
"QTabBar"_L1) {
131 iface =
new QAccessibleTabBar(widget);
133 }
else if (classname ==
"QSizeGrip"_L1) {
134 iface =
new QAccessibleWidgetV2(widget, QAccessible::Grip);
135#if QT_CONFIG(splitter)
136 }
else if (classname ==
"QSplitter"_L1) {
137 iface =
new QAccessibleWidgetV2(widget, QAccessible::Splitter);
138 }
else if (classname ==
"QSplitterHandle"_L1) {
139 iface =
new QAccessibleWidgetV2(widget, QAccessible::Grip);
141#if QT_CONFIG(textedit) && !defined(QT_NO_CURSOR)
142 }
else if (classname ==
"QTextEdit"_L1) {
143 iface =
new QAccessibleTextEdit(widget);
144 }
else if (classname ==
"QPlainTextEdit"_L1) {
145 iface =
new QAccessiblePlainTextEdit(widget);
147 }
else if (classname ==
"QTipLabel"_L1) {
148 iface =
new QAccessibleDisplay(widget, QAccessible::ToolTip);
149 }
else if (classname ==
"QFrame"_L1) {
150 iface =
new QAccessibleWidgetV2(widget, QAccessible::Border);
151#if QT_CONFIG(stackedwidget)
152 }
else if (classname ==
"QStackedWidget"_L1) {
153 iface =
new QAccessibleStackedWidget(widget);
155#if QT_CONFIG(toolbox)
156 }
else if (classname ==
"QToolBox"_L1) {
157 iface =
new QAccessibleToolBox(widget);
159#if QT_CONFIG(mdiarea)
160 }
else if (classname ==
"QMdiArea"_L1) {
161 iface =
new QAccessibleMdiArea(widget);
162 }
else if (classname ==
"QMdiSubWindow"_L1) {
163 iface =
new QAccessibleMdiSubWindow(widget);
165#if QT_CONFIG(dialogbuttonbox)
166 }
else if (classname ==
"QDialogButtonBox"_L1) {
167 iface =
new QAccessibleDialogButtonBox(widget);
170 }
else if (classname ==
"QDial"_L1) {
171 iface =
new QAccessibleDial(widget);
173#if QT_CONFIG(rubberband)
174 }
else if (classname ==
"QRubberBand"_L1) {
175 iface =
new QAccessibleWidgetV2(widget, QAccessible::Border);
177#if QT_CONFIG(textbrowser) && !defined(QT_NO_CURSOR)
178 }
else if (classname ==
"QTextBrowser"_L1) {
179 iface =
new QAccessibleTextBrowser(widget);
181#if QT_CONFIG(scrollarea)
182 }
else if (classname ==
"QAbstractScrollArea"_L1) {
183 iface =
new QAccessibleAbstractScrollArea(widget);
184 }
else if (classname ==
"QScrollArea"_L1) {
185 iface =
new QAccessibleScrollArea(widget);
187#if QT_CONFIG(calendarwidget)
188 }
else if (classname ==
"QCalendarWidget"_L1) {
189 iface =
new QAccessibleCalendarWidget(widget);
191#if QT_CONFIG(dockwidget)
192 }
else if (classname ==
"QDockWidget"_L1) {
193 iface =
new QAccessibleDockWidget(widget);
196 }
else if (classname ==
"QWidget"_L1) {
197 iface =
new QAccessibleWidgetV2(widget);
198 }
else if (classname ==
"QWindowContainer"_L1) {
199 iface =
new QAccessibleWindowContainer(widget);