Spec-Zone.ru › Qt 5.6

Класс QSocketNotifier

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

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

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

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

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

QSocketNotifier(qintptr socket, Type type, QObject *parent = Q_NULLPTR)
~QSocketNotifier()
bool isEnabled() const
qintptr socket() const
Type type() const
  • 31 открытых функции унаследованы от QObject

Открытые слоты

void setEnabled(bool enable)
  • 1 открытый слот унаследован от QObject

Сигналы

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

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

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

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

  • 1 свойство унаследовано от QObject
  • 11 статических открытых членов унаследованы от 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, Type type, QObject *parent = Q_NULLPTR)

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

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

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

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

QSocketNotifier::~QSocketNotifier()

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

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

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

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

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

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

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

Type QSocketNotifier::type() const

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

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

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

Spec-Zone.ru

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