Spec-Zone.ru › Qt 6.1

Класс QAbstractEventDispatcher

Класс QAbstractEventDispatcher предоставляет интерфейс для управления очередью событий Qt. Подробнее...

Заголовок: #include <QAbstractEventDispatcher>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QObject
  • Список всех членов, включая наследуемые члены

Открытые типы

Структура TimerInfo

Открытые функции

QAbstractEventDispatcher(QObject *parent = nullptr)
виртуальный ~QAbstractEventDispatcher()
bool filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
виртуальный void interrupt() = 0
виртуальный bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0
виртуальный void registerSocketNotifier(QSocketNotifier *notifier) = 0
int registerTimer(qint64 interval, Qt::TimerType timerType, QObject *object)
виртуальный void registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object) = 0
виртуальный QList<QAbstractEventDispatcher::TimerInfo> registeredTimers(QObject *object) const = 0
виртуальный int remainingTime(int timerId) = 0
void removeNativeEventFilter(QAbstractNativeEventFilter *filter)
виртуальный void unregisterSocketNotifier(QSocketNotifier *notifier) = 0
виртуальный bool unregisterTimer(int timerId) = 0
виртуальный bool unregisterTimers(QObject *object) = 0
виртуальный void wakeUp() = 0

Сигналы

void aboutToBlock()
void awake()

Статические открытые члены

QAbstractEventDispatcher * instance(QThread *thread = nullptr)

Подробное описание

Диспечер событий получает события от системного окна и других источников. Затем он отправляет их экземпляру 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 = nullptr)

Конструирует новый диспечер событий с заданным parent.

void QAbstractEventDispatcher::aboutToBlock()

Этот сигнал испускается перед тем, как цикл событий вызовет функцию, которая может заблокироваться.

См. также awake().

void QAbstractEventDispatcher::awake()

Этот сигнал испускается после того, как цикл событий возвращается из функции, которая могла заблокироваться.

См. также wakeUp() и aboutToBlock().

QAbstractEventDispatcher::~QAbstractEventDispatcher()

Уничтожает диспечер событий.

bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)

Отправляет message через фильтры событий, которые были установлены с помощью installNativeEventFilter(). Эта функция возвращает true как только фильтр событий возвращает true, и false в противном случае, чтобы указать, что обработка события должна быть продолжена.

Подклассы QAbstractEventDispatcher *должны* вызывать эту функцию для *всех* сообщений, полученных от системы, чтобы обеспечить совместимость с любыми расширениями, которые могут быть использованы в приложении. Тип события eventType специфичен для платформенного плагина, выбранного во время выполнения, и может быть использован для преобразования сообщения в правильный тип. Указатель result используется только на Windows и соответствует указателю LRESULT.

Обратите внимание, что тип message зависит от платформы. См. QAbstractNativeEventFilter для получения подробностей.

Эта функция была добавлена в Qt 5.0.

См. также installNativeEventFilter() и QAbstractNativeEventFilter::nativeEventFilter().

void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

Устанавливает фильтр событий filterObj для всех событий ядра, получаемых приложением.

Фильтр событий filterObj получает события через свою функцию nativeEventFilter(), которая вызывается для всех событий, полученных всеми потоками.

Функция nativeEventFilter() должна возвращать true, если событие должно быть отфильтровано (в этом случае остановлено). Она должна возвращать false, чтобы разрешить продолжить нормальную обработку Qt: родное событие может быть затем преобразовано в QEvent и обработано стандартным фильтром событий Qt, например, QObject::installEventFilter().

Если установлено несколько фильтров событий, фильтр, установленный последним, активируется первым.

Примечание: Функция фильтра, установленная здесь, получает сообщения ядра, т. е. структуры MSG или XEvent.

END_OF_DOCUMENT_MARKER

Для максимальной переносимости всегда старайтесь использовать объекты QEvent и QObject::installEventFilter(), когда это возможно.

Эта функция была добавлена в Qt 5.0.

См. также QObject::installEventFilter().

[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)

Возвращает указатель на объект диспетчера событий для указанного потока thread. Если thread равен nullptr, используется текущий поток. Если диспетчер событий для указанного потока не существует, эта функция возвращает nullptr.

Примечание: Если 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, и события недоступны, функция вернётся сразу же.

Примечание: Эта функция не обрабатывает события непрерывно; она возвращается после обработки всех доступных событий.

[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)

Регистрирует notifier в цикле событий. Подклассы должны реализовать этот метод, чтобы связать уведомитель сокета с другим циклом событий.

int QAbstractEventDispatcher::registerTimer(qint64 interval, Qt::TimerType timerType, QObject *object)

Регистрирует таймер с заданным interval и timerType для данного object и возвращает идентификатор таймера.

[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)

Регистрирует таймер с заданным timerId, interval и timerType для данного object.

[pure virtual] QList<QAbstractEventDispatcher::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.

[since 5.0] void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)

Удаляет фильтр событий filter из этого объекта. Запрос игнорируется, если такой фильтр событий не был установлен.

Все фильтры событий для этого объекта автоматически удаляются при уничтожении этого объекта.

Удаление фильтра событий всегда безопасно, даже во время активации фильтра событий (то есть, даже из функции nativeEventFilter()).

Эта функция была добавлена в Qt 5.0.

См. также installNativeEventFilter() и QAbstractNativeEventFilter.

[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-6.1/qabstracteventdispatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API