Spec-Zone.ru › Qt 5.6

Класс 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)
virtual void flush() = 0
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
  • 31 публичная функция, унаследованная от 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()

Удаляет диспетчер событий.

[signal] void QAbstractEventDispatcher::aboutToBlock()

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

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

[signal] 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().

[pure virtual] void QAbstractEventDispatcher::flush()

Очищает очередь событий. Обычно возвращает почти мгновенно. Не выполняет никаких действий на платформах, кроме X11.

void 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/archives/qt-5.6/qabstracteventdispatcher.html

Spec-Zone.ru

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