Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qeventloop.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 QEVENTLOOP_H
5#define QEVENTLOOP_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qdeadlinetimer.h>
9
11
14
15class Q_CORE_EXPORT QEventLoop : public QObject
16{
18 Q_DECLARE_PRIVATE(QEventLoop)
19 friend class QEventLoopLocker;
20
21public:
23 ~QEventLoop();
24
26 AllEvents = 0x00,
27 ExcludeUserInputEvents = 0x01,
28 ExcludeSocketNotifiers = 0x02,
29 WaitForMoreEvents = 0x04,
30 X11ExcludeTimers = 0x08,
31 EventLoopExec = 0x20,
32 DialogExec = 0x40,
33 ApplicationExec = 0x80,
34 };
35 Q_DECLARE_FLAGS(ProcessEventsFlags, ProcessEventsFlag)
36 Q_FLAG(ProcessEventsFlags)
37
38 bool processEvents(ProcessEventsFlags flags = AllEvents);
39 void processEvents(ProcessEventsFlags flags, int maximumTime);
40 void processEvents(ProcessEventsFlags flags, QDeadlineTimer deadline);
41
42 int exec(ProcessEventsFlags flags = AllEvents);
43 bool isRunning() const;
44
45 void wakeUp();
46
47 bool event(QEvent *event) override;
48
49public Q_SLOTS:
50 void exit(int returnCode = 0);
51 void quit();
52};
53
54Q_DECLARE_OPERATORS_FOR_FLAGS(QEventLoop::ProcessEventsFlags)
55
56class QEventLoopLockerPrivate;
57
59{
60public:
61 Q_NODISCARD_CTOR Q_CORE_EXPORT QEventLoopLocker() noexcept;
62 Q_NODISCARD_CTOR Q_CORE_EXPORT explicit QEventLoopLocker(QEventLoop *loop) noexcept;
63 Q_NODISCARD_CTOR Q_CORE_EXPORT explicit QEventLoopLocker(QThread *thread) noexcept;
64 Q_CORE_EXPORT ~QEventLoopLocker();
65
67 : p{std::exchange(other.p, 0)} {}
69 { auto moved = std::move(other); swap(moved); return *this; }
70
71 void swap(QEventLoopLocker &other) noexcept { std::swap(p, other.p); }
72 friend void swap(QEventLoopLocker &lhs, QEventLoopLocker &rhs) noexcept { lhs.swap(rhs); }
73
74private:
75 Q_DISABLE_COPY(QEventLoopLocker)
77
78 //
79 // Private implementation details.
80 // Do not call from public inline API!
81 //
82 enum class Type : quintptr {
83 EventLoop,
84 Thread,
85 Application,
86 };
87 explicit QEventLoopLocker(void *ptr, Type t) noexcept;
88 quintptr p;
89 static constexpr quintptr TypeMask = 0x3;
90 Type type() const { return Type(p & TypeMask); }
91 void *pointer() const { return reinterpret_cast<void *>(p & ~TypeMask); }
92 template <typename Func>
93 void visit(Func func) const;
94};
95
97
98#endif // QEVENTLOOP_H
\inmodule QtCore
\inmodule QtCore
Definition qeventloop.h:59
Q_NODISCARD_CTOR QEventLoopLocker(QEventLoopLocker &&other) noexcept
Definition qeventloop.h:66
Q_NODISCARD_CTOR Q_CORE_EXPORT QEventLoopLocker() noexcept
Creates an event locker operating on the QCoreApplication.
friend void swap(QEventLoopLocker &lhs, QEventLoopLocker &rhs) noexcept
Definition qeventloop.h:72
Q_CORE_EXPORT ~QEventLoopLocker()
Destroys this event loop locker object.
void swap(QEventLoopLocker &other) noexcept
Definition qeventloop.h:71
friend class QEventLoopLockerPrivate
Definition qeventloop.h:76
QEventLoopLocker & operator=(QEventLoopLocker &&other) noexcept
Definition qeventloop.h:68
\inmodule QtCore
Definition qeventloop.h:16
ProcessEventsFlag
This enum controls the types of events processed by the processEvents() functions.
Definition qeventloop.h:25
\inmodule QtCore
Definition qcoreevent.h:45
\inmodule QtCore
Definition qobject.h:90
Combined button and popup list for selecting options.
#define Q_NODISCARD_CTOR
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
static ControlElement< T > * ptr(QWidget *widget)
GLenum type
GLbitfield flags
struct _cl_event * event
GLenum func
Definition qopenglext.h:663
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const void * pointer
Definition qopenglext.h:384
GLfloat GLfloat p
[1]
static bool isRunning()
Definition main.cpp:358
#define Q_OBJECT
#define Q_FLAG(x)
#define Q_SLOTS
size_t quintptr
Definition qtypes.h:72
#define explicit
QDeadlineTimer deadline(30s)
QSharedPointer< T > other(t)
[5]
dialog exec()
Definition moc.h:24
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent