Класс QAbstractEventDispatcher
Класс QAbstractEventDispatcher предоставляет интерфейс для управления очередью событий Qt. Подробнее...
| Заголовок: | #include <QAbstractEventDispatcher> |
| qmake: | QT += core |
| Наследует: | QObject |
Открытые типы
| класс | TimerInfo |
Открытые функции
| QAbstractEventDispatcher(QObject *parent = Q_NULLPTR) | |
| ~QAbstractEventDispatcher() | |
| bool | filterNativeEvent(const QByteArray &eventType, void *message, long *result) |
| void | installNativeEventFilter(QAbstractNativeEventFilter *filterObj) |
| virtual void | interrupt() = 0 |
| virtual bool | processEvents(QEventLoop::ProcessEventsFlags flags) = 0 |
| virtual bool | registerEventNotifier(QWinEventNotifier *notifier) = 0 |
| virtual void | registerSocketNotifier(QSocketNotifier *notifier) = 0 |
| int | registerTimer(int interval, Qt::TimerType timerType, QObject *object) |
| virtual void | registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) = 0 |
| virtual QList<TimerInfo> | registeredTimers(QObject *object) const = 0 |
| virtual int | remainingTime(int timerId) = 0 |
| void | removeNativeEventFilter(QAbstractNativeEventFilter *filter) |
| virtual void | unregisterEventNotifier(QWinEventNotifier *notifier) = 0 |
| virtual void | unregisterSocketNotifier(QSocketNotifier *notifier) = 0 |
| virtual bool | unregisterTimer(int timerId) = 0 |
| virtual bool | unregisterTimers(QObject *object) = 0 |
| virtual void | wakeUp() = 0 |
- 32 открытые функции, унаследованные от QObject
Сигналы
| void | aboutToBlock() |
| void | awake() |
- 2 сигнала, унаследованных от QObject
Статические открытые члены
| QAbstractEventDispatcher * | instance(QThread *thread = Q_NULLPTR) |
- 11 статических открытых членов, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 9 защищенных функций, унаследованных от QObject
Подробное описание
Класс QAbstractEventDispatcher предоставляет интерфейс для управления очередью событий Qt.
Диспетчер событий получает события от системного окна и других источников. Затем он отправляет их экземпляру QCoreApplication или QApplication для обработки и передачи. QAbstractEventDispatcher предоставляет тонкую настройку доставки событий.
Для простого управления обработкой событий используйте QCoreApplication::processEvents().
Для более тонкого управления циклом событий приложения вызовите instance() и вызовите функции на объекте QAbstractEventDispatcher, который возвращается. Если вы хотите использовать собственный экземпляр QAbstractEventDispatcher или подкласс QAbstractEventDispatcher, вы должны установить его с помощью QCoreApplication::setEventDispatcher() или QThread::setEventDispatcher() до установки диспетчера событий по умолчанию.
Основной цикл событий запускается путем вызова QCoreApplication::exec() и останавливается путем вызова QCoreApplication::exit(). Локальные циклы событий можно создавать с помощью QEventLoop.
Программы, выполняющие длительные операции, могут вызвать processEvents() с битовым ИЛИ комбинацией различных значений QEventLoop::ProcessEventsFlag для управления тем, какие события должны быть доставлены.
QAbstractEventDispatcher также позволяет интегрировать внешний цикл событий с циклом событий Qt.
См. также QEventLoop, QCoreApplication и QThread.
Документация по функциям-членам
QAbstractEventDispatcher::QAbstractEventDispatcher(QObject *parent = Q_NULLPTR)
Конструирует новый диспетчер событий с заданным parent.
QAbstractEventDispatcher::~QAbstractEventDispatcher()
Уничтожает диспетчер событий.
void QAbstractEventDispatcher::aboutToBlock()
Этот сигнал испускается перед тем, как цикл событий вызовет функцию, которая может заблокироваться.
См. также awake().
void QAbstractEventDispatcher::awake()
Этот сигнал испускается после того, как цикл событий возвращается из функции, которая могла заблокироваться.
См. также wakeUp() и aboutToBlock().
bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, long *result)
Отправляет message через фильтры событий, которые были установлены с помощью installNativeEventFilter(). Эта функция возвращает значение true как только фильтр событий возвращает true, и false в противном случае, чтобы указать, что обработка события должна продолжаться.
Подклассы QAbstractEventDispatcher обязаны вызывать эту функцию для всех сообщений, полученных от системы, чтобы обеспечить совместимость с любыми расширениями, которые могут использоваться в приложении. Тип события eventType специфичен для плагина платформы, выбранного во время выполнения, и может быть использован для приведения сообщения к нужному типу. Указатель result используется только в Windows и соответствует указателю LRESULT.
Обратите внимание, что тип message зависит от платформы. См. QAbstractNativeEventFilter для получения подробной информации.
Эта функция была введена в Qt 5.0.
См. также installNativeEventFilter() и QAbstractNativeEventFilter::nativeEventFilter().
END_OF_DOCUMENT_MARKERvoid QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
Устанавливает обработчик событий filterObj для всех событий родного уровня, получаемых приложением.
Обработчик событий filterObj получает события через функцию nativeEventFilter(), которая вызывается для всех событий, полученных всеми потоками.
Функция nativeEventFilter() должна возвращать true, если событие должно быть отфильтровано (в этом случае остановлено). Она должна возвращать false, чтобы разрешить стандартную обработку Qt: родное событие может затем быть преобразовано в QEvent и обработано стандартной системой фильтрации событий Qt, например, QObject::installEventFilter().
Если установлено несколько обработчиков событий, обработчик, установленный последним, активируется первым.
Примечание: Функция-фильтр, установленная здесь, получает сообщения низкого уровня, то есть структуры MSG или XEvent.
Для максимальной переносимости всегда следует использовать объекты QEvent и QObject::installEventFilter() всякий раз, когда это возможно.
Данная функция была добавлена в Qt 5.0.
См. также QObject::installEventFilter().
[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = Q_NULLPTR)
Возвращает указатель на объект диспетчера событий для указанного потока thread. Если thread равен нулю, используется текущий поток. Если диспетчер событий для указанного потока не существует, эта функция возвращает 0.
Примечание: Если Qt скомпилирован без поддержки потоков, аргумент thread игнорируется.
[pure virtual] void QAbstractEventDispatcher::interrupt()
Прерывает обработку событий. Диспетчер событий вернётся из processEvents() как можно скорее.
[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
Обрабатывает ожидающие события, соответствующие flags, пока не останется больше событий для обработки. Возвращает true если событие было обработано; в противном случае возвращает false.
Эта функция особенно полезна, если у вас есть длительная операция, и вы хотите отобразить её прогресс, не позволяя вводу пользователя, используя флаг QEventLoop::ExcludeUserInputEvents.
Если флаг QEventLoop::WaitForMoreEvents установлен в flags, поведение этой функции следующее:
- Если события доступны, эта функция возвращается после их обработки.
- Если события недоступны, функция будет ожидать их появления и вернётся после обработки вновь появившихся событий.
Если флаг QEventLoop::WaitForMoreEvents не установлен в flags, и события недоступны, функция вернётся немедленно.
Примечание: Эта функция не обрабатывает события непрерывно; она возвращается после обработки всех доступных событий.
См. также hasPendingEvents().
[pure virtual] bool QAbstractEventDispatcher::registerEventNotifier(QWinEventNotifier *notifier)
Этот чисто виртуальный метод существует только в Windows и должен быть переопределён реализацией диспетчера событий, специфичной для Windows. notifier — это экземпляр QWinEventNotifier, подлежащий регистрации.
Метод должен возвращать true, если регистрация notifier прошла успешно, иначе false.
QWinEventNotifier вызывает этот метод в своём конструкторе, и прямого вызова этого метода никогда не требуется.
См. также QWinEventNotifier и unregisterEventNotifier().
[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
Регистрирует notifier в цикле событий. Подклассы должны реализовать этот метод, чтобы связать уведомление о сокете с другим циклом событий.
int QAbstractEventDispatcher::registerTimer(int interval, Qt::TimerType timerType, QObject *object)
Регистрирует таймер с указанным interval и timerType для данного object и возвращает идентификатор таймера.
[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object)
Регистрирует таймер с указанным timerId, interval и timerType для данного object.
[pure virtual] QList<TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const
Возвращает список зарегистрированных таймеров для object. Структура TimerInfo имеет timerId, interval, и timerType члены.
См. также Qt::TimerType.
[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)
Возвращает оставшееся время в миллисекундах для данного timerId. Если таймер не активен, возвращаемое значение будет -1. Если таймер просрочен, возвращаемое значение будет 0.
См. также Qt::TimerType.
void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)
Удаляет обработчик событий filter из этого объекта. Запрос игнорируется, если такой обработчик событий не был установлен.
Все обработчики событий для этого объекта автоматически удаляются при уничтожении этого объекта.
Удаление обработчика событий всегда безопасно, даже во время активации обработчика событий (то есть даже изнутри функции nativeEventFilter()).
Данная функция была добавлена в Qt 5.0.
См. также installNativeEventFilter() и QAbstractNativeEventFilter.
[pure virtual] void QAbstractEventDispatcher::unregisterEventNotifier(QWinEventNotifier *notifier)
Этот чисто виртуальный метод существует только в Windows и должен быть переопределён реализацией диспетчера событий, специфичной для Windows. notifier — это экземпляр QWinEventNotifier, подлежащий отмене регистрации.
QWinEventNotifier вызывает этот метод в своём деструкторе, и прямого вызова этого метода никогда не требуется.
См. также QWinEventNotifier и registerEventNotifier().
[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
Отменяет регистрацию notifier из диспетчера событий. Подклассы должны переопределить этот метод, чтобы связать уведомление о сокете с другим циклом событий. Переопределения должны вызывать базовую реализацию.
[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)
Отменяет регистрацию таймера с заданным timerId. Возвращает true если операция прошла успешно; в противном случае возвращает false.
См. также registerTimer() и unregisterTimers().
[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)
Отменяет регистрацию всех таймеров, связанных с данным object. Возвращает true если все таймеры были успешно удалены; в противном случае возвращает false.
См. также unregisterTimer() и registeredTimers().
[pure virtual] void QAbstractEventDispatcher::wakeUp()
Разбуждает цикл событий.
Примечание: Эта функция безопасна для многопоточного доступа.
См. также awake().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qabstracteventdispatcher.html