Класс 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
Дополнительные унаследованные члены
Подробное описание
Класс 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.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
[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