Spec-Zone.ru › Qt 5.11

Класс QSocketNotifier

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

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

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

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

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

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

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

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

Сигналы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Перечисление QSocketNotifier::Тип

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

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

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

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

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

QSocketNotifier::QSocketNotifier(qintptr socket, QSocketNotifier::Тип type, QObject *parent = nullptr)

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

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

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

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

[virtual] QSocketNotifier::~QSocketNotifier()

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

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

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

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

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

См. также тип() и 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 истинно, нотификатор включается; в противном случае нотификатор отключается.

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

Нотификаторы записи обычно отключаются сразу после излучения сигнала activated()

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

qintptr QSocketNotifier::socket() const

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

См. также тип().

QSocketNotifier::Тип QSocketNotifier::тип() const

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

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

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

Spec-Zone.ru

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