Spec-Zone.ru › Qt 5.14

Класс 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

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

void setEnabled(bool enable)

Сигналы

void activated(int socket)

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

виртуальный bool event(QEvent *e) override

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

Класс 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().

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

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

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

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

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

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

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

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

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

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

[virtual] QSocketNotifier::~QSocketNotifier()

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

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

Переопределяет: QObject::event(QEvent *e).

bool QSocketNotifier::isEnabled() const

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

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

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.14/qsocketnotifier.html

Spec-Zone.ru

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