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