Класс QSocketNotifier
Класс QSocketNotifier обеспечивает поддержку мониторинга активности на дескрипторе файла. Подробнее...
| Заголовок: | #include <QSocketNotifier> |
| qmake: | QT += core |
| Наследует: | QObject |
Типы публичного доступа
| перечисление | Тип { Чтение, Запись, Исключение } |
Функции публичного доступа
| QSocketNotifier(qintptr сокет, Тип тип, QObject *родитель = Q_NULLPTR) | |
| ~QSocketNotifier() | |
| bool | isEnabled() const |
| qintptr | сокет() const |
| Тип | тип() const |
- 32 функции публичного доступа унаследованы от QObject
Слот доступа
| void | setEnabled(bool включить) |
- 1 слот доступа унаследован от QObject
Сигналы
| void | activated(int сокет) |
- 2 сигнала унаследованы от QObject
Переопределенные защищенные функции
| virtual bool | event(QEvent *e) |
- 9 защищенных функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 11 статических публичных членов унаследованы от QObject
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QSocketNotifier обеспечивает поддержку мониторинга активности на дескрипторе файла.
Класс QSocketNotifier позволяет интегрировать цикл событий Qt с другими циклами событий, основанными на дескрипторах файлов. Действия с дескриптором файла обнаруживаются в основном цикле событий Qt (QCoreApplication::exec()).
После открытия устройства с помощью низкоуровневого (обычно специфичного для платформы) API можно создать уведомление о сокете для мониторинга дескриптора файла. Уведомление о сокете включено по умолчанию, т. е. оно излучает сигнал activated() всякий раз, когда происходит событие сокета, соответствующее его типу. Подключите сигнал activated() к слоту, который вы хотите вызвать, когда произойдет событие, соответствующее типу вашего уведомления о сокете.
Существуют три типа уведомлений о сокетах: чтение, запись и исключение. Тип описывается перечислением Тип и должен быть указан при создании уведомления о сокете. После создания его можно определить с помощью функции тип(). Обратите внимание, что если вам нужно отслеживать как чтение, так и запись для одного и того же дескриптора файла, вам необходимо создать два уведомления о сокетах. Обратите также внимание, что нельзя установить два уведомления о сокетах одного типа (Чтение, Запись, Исключение) для одного и того же сокета.
Функция setEnabled() позволяет отключить или включить уведомление о сокете. В целом рекомендуется явно включать или отключать уведомление о сокете, особенно для уведомлений о записи. Отключенное уведомление игнорирует события сокета (тот же эффект, что и при отсутствии уведомления о сокете). Используйте функцию isEnabled(), чтобы определить текущий статус уведомления.
Наконец, вы можете использовать функцию сокет(), чтобы получить идентификатор сокета. Несмотря на то, что класс называется QSocketNotifier, он обычно используется для других типов устройств, кроме сокетов. QTcpSocket и QUdpSocket предоставляют уведомления через сигналы, поэтому обычно нет необходимости использовать QSocketNotifier с ними.
См. также QFile, QProcess, QTcpSocket и QUdpSocket.
Документация по типу члена
перечисление QSocketNotifier::Тип
Это перечисление описывает различные типы событий, которые может распознавать уведомление о сокете. Тип должен быть указан при создании уведомления о сокете.
Обратите внимание, что если вам нужно отслеживать как чтение, так и запись для одного и того же дескриптора файла, вам необходимо создать два уведомления о сокетах. Обратите также внимание, что нельзя установить два уведомления о сокетах одного типа (Чтение, Запись, Исключение) для одного и того же сокета.
| Константа | Значение | Описание |
|---|---|---|
QSocketNotifier::Read |
0 |
Есть данные для чтения. |
QSocketNotifier::Write |
1 |
Данные могут быть записаны. |
QSocketNotifier::Exception |
2 |
Произошло исключение. Не рекомендуется использовать. |
См. также QSocketNotifier() и тип().
Документация по функциям члена
QSocketNotifier::QSocketNotifier(qintptr сокет, Тип тип, QObject *родитель = Q_NULLPTR)
Создаёт уведомление о сокете с заданным родительским объектом. Включает сокет и отслеживает события заданного типа.
В целом рекомендуется явно включать или отключать уведомление о сокете, особенно для уведомлений о записи.
Примечание для пользователей Windows: Сокет, переданный в QSocketNotifier, станет неблокирующим, даже если он был создан как блокирующий сокет.
См. также setEnabled() и isEnabled().
QSocketNotifier::~QSocketNotifier()
Уничтожает это уведомление о сокете.
[signal] void QSocketNotifier::activated(int сокет)
Этот сигнал излучается всякий раз, когда уведомление о сокете включено и происходит событие сокета, соответствующее его типу.
Идентификатор сокета передаётся в параметре сокет.
Примечание: Это закрытый сигнал. Его можно использовать в подключениях сигналов, но его нельзя излучить пользователем.
[virtual protected] bool QSocketNotifier::event(QEvent *e)
Переопределено из QObject::event().
bool QSocketNotifier::isEnabled() const
Возвращает true если уведомление включено; в противном случае возвращает false.
См. также setEnabled().
[slot] void QSocketNotifier::setEnabled(bool включить)
Если включить равно true, уведомление включено; в противном случае уведомление отключено.
Уведомление включено по умолчанию, т. е. оно излучает сигнал activated() всякий раз, когда происходит событие сокета, соответствующее его типу. Если оно отключено, оно игнорирует события сокета (тот же эффект, что и при отсутствии уведомления о сокете).
Уведомления о записи обычно должны быть отключены сразу после того, как был излучен сигнал activated()
См. также isEnabled() и activated().
qintptr QSocketNotifier::сокет() const
Возвращает идентификатор сокета, указанный в конструкторе.
См. также тип().
Тип QSocketNotifier::тип() const
Возвращает тип события сокета, указанный в конструкторе.
См. также сокет().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qsocketnotifier.html