Spec-Zone.ru › Qt 5.12

Класс QSocketNotifier

Класс QSocketNotifier предоставляет поддержку мониторинга активности на дескрипторе файла. Подробнее...

Заголовок: #include <QSocketNotifier>
qmake: QT += core
Наследуется от: QObject
  • Список всех членов, включая наследуемые
  • Устаревшие члены

Типы публичного доступа

перечисление Type { Чтение, Запись, Исключение }

Функции публичного доступа

QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
виртуальный ~QSocketNotifier()
bool isEnabled() const
qintptr socket() const
QSocketNotifier::Type type() const
  • 32 функции публичного доступа унаследованы от QObject

Свойства публичного доступа

void setEnabled(bool enable)
  • 1 свойство публичного доступа унаследовано от QObject

Сигналы

void activated(int socket)
  • 2 сигнала унаследованы от QObject

Статические члены публичного доступа

const QMetaObject staticMetaObject
  • 10 статических членов публичного доступа унаследованы от QObject

Переопределённые защищённые функции

виртуальный bool event(QEvent *e) override
  • 9 защищённых функций унаследованы от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 9 защищённых функций унаследованы от QObject

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

Класс QSocketNotifier предоставляет поддержку мониторинга активности на дескрипторе файла.

Класс QSocketNotifier позволяет интегрировать цикл событий Qt с другими циклами событий, основанными на дескрипторах файлов. Действие дескриптора файла обнаруживается в основном цикле событий Qt (QCoreApplication::exec()).

После открытия устройства с помощью низкоуровневого (обычно специфичного для платформы) API вы можете создать нотификатор сокета для мониторинга дескриптора файла. Нотификатор сокета включён по умолчанию, т.е. он испускает сигнал activated() всякий раз, когда возникает событие сокета, соответствующее его типу. Подключите сигнал activated() к слоту, который вы хотите вызвать, когда произойдёт событие, соответствующее типу вашего нотификатора сокета.

Существуют три типа нотификаторов сокетов: чтение, запись и исключение. Тип описывается перечислением Type, и должен быть указан при создании нотификатора сокета. После создания его можно определить с помощью функции type(). Обратите внимание, что если вам нужно отслеживать как чтение, так и запись для одного и того же дескриптора файла, вы должны создать два нотификатора сокета. Также обратите внимание, что невозможно установить два нотификатора сокетов одного типа (Чтение, Запись, Исключение) на один и тот же сокет.

Функция setEnabled() позволяет отключить и включить нотификатор сокета. В целом рекомендуется явно включать или отключать нотификатор сокета, особенно для нотификаторов записи. Отключенный нотификатор игнорирует события сокета (тот же эффект, что и при отсутствии создания нотификатора сокета). Используйте функцию isEnabled(), чтобы определить текущий статус нотификатора.

Наконец, вы можете использовать функцию socket() для получения идентификатора сокета. Хотя класс называется QSocketNotifier, он обычно используется для других типов устройств, кроме сокетов. QTcpSocket и QUdpSocket обеспечивают уведомления через сигналы, поэтому обычно нет необходимости использовать QSocketNotifier с ними.

См. также QFile, QProcess, QTcpSocket и QUdpSocket.

Документация по типам членов

перечисление QSocketNotifier::Type

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

Обратите внимание, что если вам нужно отслеживать как чтение, так и запись для одного и того же дескриптора файла, вы должны создать два нотификатора сокета. Также обратите внимание, что невозможно установить два нотификатора сокетов одного типа (Чтение, Запись, Исключение) на один и тот же сокет.

Постоянная Значение Описание
QSocketNotifier::Read 0 Есть данные для чтения.
QSocketNotifier::Write 1 Данные могут быть записаны.
QSocketNotifier::Exception 2 Произошло исключение. Мы не рекомендуем использовать это.

См. также QSocketNotifier() и type().

Документация по функциям членов

QSocketNotifier::QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)

Создаёт нотификатор сокета с заданным parent. Он включает socket и отслеживает события заданного типа type.

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

Примечание для пользователей Windows: Сокет, переданный в QSocketNotifier, станет неблокирующим, даже если он был создан как блокирующий сокет.

См. также setEnabled() и isEnabled().

[virtual] QSocketNotifier::~QSocketNotifier()

Уничтожает этот нотификатор сокета.

[signal] void QSocketNotifier::activated(int socket)

Этот сигнал испускается всякий раз, когда нотификатор сокета включён и происходит событие сокета, соответствующее его типу type.

Идентификатор сокета передаётся в параметре socket.

Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.

См. также type() и socket().

[override virtual protected] bool QSocketNotifier::event(QEvent *e)

Переопределено из QObject::event().

bool QSocketNotifier::isEnabled() const

Возвращает true, если нотификатор включён; в противном случае возвращает false.

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

[slot] void QSocketNotifier::setEnabled(bool enable)

Если enable равно true, нотификатор включён; в противном случае нотификатор выключен.

Нотификатор включён по умолчанию, т.е. он испускает сигнал activated() всякий раз, когда происходит событие сокета, соответствующее его типу type. Если он выключен, он игнорирует события сокета (тот же эффект, что и при отсутствии создания нотификатора сокета).

Нотификаторы записи обычно должны быть выключены сразу после того, как был испущен сигнал activated()

См. также isEnabled() и activated().

qintptr QSocketNotifier::socket() const

Возвращает идентификатор сокета, указанный в конструкторе.

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

QSocketNotifier::Type QSocketNotifier::type() const

Возвращает тип события сокета, указанный в конструкторе.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qsocketnotifier.html

Spec-Zone.ru

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