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