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 QAPPLICATION_H
5#define QAPPLICATION_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtCore/qcoreapplication.h>
9#include <QtGui/qwindowdefs.h>
10#include <QtCore/qpoint.h>
11#include <QtCore/qsize.h>
12#include <QtGui/qcursor.h>
13#include <QtGui/qguiapplication.h>
14
15QT_BEGIN_NAMESPACE
16
17
18class QStyle;
19class QEventLoop;
20class QIcon;
21class QLocale;
22class QPlatformNativeInterface;
23
24class QApplication;
25class QApplicationPrivate;
26#if defined(qApp)
27#undef qApp
28#endif
29#define qApp (static_cast<QApplication *>(QCoreApplication::instance()))
30
31class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
32{
33 Q_OBJECT
34 Q_PROPERTY(int cursorFlashTime READ cursorFlashTime WRITE setCursorFlashTime)
35 Q_PROPERTY(int doubleClickInterval READ doubleClickInterval WRITE setDoubleClickInterval)
36 Q_PROPERTY(int keyboardInputInterval READ keyboardInputInterval WRITE setKeyboardInputInterval)
37#if QT_CONFIG(wheelevent)
38 Q_PROPERTY(int wheelScrollLines READ wheelScrollLines WRITE setWheelScrollLines)
39#endif
40 Q_PROPERTY(int startDragTime READ startDragTime WRITE setStartDragTime)
41 Q_PROPERTY(int startDragDistance READ startDragDistance WRITE setStartDragDistance)
42#ifndef QT_NO_STYLE_STYLESHEET
43 Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
44#endif
45 Q_PROPERTY(bool autoSipEnabled READ autoSipEnabled WRITE setAutoSipEnabled)
46
47public:
48#ifdef Q_QDOC
49 QApplication(int &argc, char **argv);
50#else
51 QApplication(int &argc, char **argv, int = ApplicationFlags);
52#endif
53 virtual ~QApplication();
54
55 static QStyle *style();
56 static void setStyle(QStyle*);
57 static QStyle *setStyle(const QString&);
58
59 using QGuiApplication::palette;
60 static QPalette palette(const QWidget *);
61 static QPalette palette(const char *className);
62 static void setPalette(const QPalette &, const char* className = nullptr);
63 static QFont font();
64 static QFont font(const QWidget*);
65 static QFont font(const char *className);
66 static void setFont(const QFont &, const char* className = nullptr);
67
68#if QT_DEPRECATED_SINCE(6,0)
69 QT_DEPRECATED_VERSION_X_6_0("Use QFontMetricsF(qApp->font()) instead.")
70 static QFontMetrics fontMetrics();
71#endif
72
73 static QWidgetList allWidgets();
74 static QWidgetList topLevelWidgets();
75
76 static QWidget *activePopupWidget();
77 static QWidget *activeModalWidget();
78 static QWidget *focusWidget();
79
80 static QWidget *activeWindow();
81
82#if QT_DEPRECATED_SINCE(6, 5)
83 QT_DEPRECATED_VERSION_X_6_5("Use QWidget::activateWindow() instead.")
84 static void setActiveWindow(QWidget* act);
85#endif
86
87 static QWidget *widgetAt(const QPoint &p);
88 static inline QWidget *widgetAt(int x, int y) { return widgetAt(p: QPoint(x, y)); }
89 static QWidget *topLevelAt(const QPoint &p);
90 static inline QWidget *topLevelAt(int x, int y) { return topLevelAt(p: QPoint(x, y)); }
91
92 static void beep();
93 static void alert(QWidget *widget, int duration = 0);
94
95 static void setCursorFlashTime(int);
96 static int cursorFlashTime();
97
98 static void setDoubleClickInterval(int);
99 static int doubleClickInterval();
100
101 static void setKeyboardInputInterval(int);
102 static int keyboardInputInterval();
103
104#if QT_CONFIG(wheelevent)
105 static void setWheelScrollLines(int);
106 static int wheelScrollLines();
107#endif
108
109 static void setStartDragTime(int ms);
110 static int startDragTime();
111 static void setStartDragDistance(int l);
112 static int startDragDistance();
113
114 static bool isEffectEnabled(Qt::UIEffect);
115 static void setEffectEnabled(Qt::UIEffect, bool enable = true);
116
117 static int exec();
118 bool notify(QObject *, QEvent *) override;
119
120#ifdef QT_KEYPAD_NAVIGATION
121 static void setNavigationMode(Qt::NavigationMode mode);
122 static Qt::NavigationMode navigationMode();
123#endif
124
125 QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QApplication)
126
127Q_SIGNALS:
128 void focusChanged(QWidget *old, QWidget *now);
129
130public:
131 QString styleSheet() const;
132 bool autoSipEnabled() const;
133public Q_SLOTS:
134#ifndef QT_NO_STYLE_STYLESHEET
135 void setStyleSheet(const QString& sheet);
136#endif
137 void setAutoSipEnabled(const bool enabled);
138 static void closeAllWindows();
139 static void aboutQt();
140
141protected:
142 bool event(QEvent *) override;
143# if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
144 QT_DEPRECATED_VERSION_X_6_10("This feature will be removed in Qt 7")
145 bool compressEvent(QEvent *, QObject *receiver, QPostEventList *) override;
146# endif
147
148private:
149 Q_DISABLE_COPY(QApplication)
150 Q_DECLARE_PRIVATE(QApplication)
151
152 friend class QGraphicsWidget;
153 friend class QGraphicsItem;
154 friend class QGraphicsScene;
155 friend class QGraphicsScenePrivate;
156 friend class QWidget;
157 friend class QWidgetPrivate;
158 friend class QWidgetWindow;
159 friend class QTranslator;
160 friend class QWidgetAnimator;
161#ifndef QT_NO_SHORTCUT
162 friend class QShortcut;
163 friend class QLineEdit;
164 friend class QWidgetTextControl;
165#endif
166 friend class QAction;
167
168#ifndef QT_NO_GESTURES
169 friend class QGestureManager;
170#endif
171};
172
173QT_END_NAMESPACE
174
175#endif // QAPPLICATION_H
176

source code of qtbase/src/widgets/kernel/qapplication.h