QSocketNotifier Class
QSocketNotifierクラスは、ファイル・ディスクリプタのアクティビティを監視するためのサポートを提供します。詳細...
ヘッダ | #include <QSocketNotifier> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QObject |
- 継承されたメンバを含むすべてのメンバのリスト
- 非推奨メンバー
- QSocketNotifierは、Network Programming APIおよびInput/Output and Networkingに含まれています。
パブリック型
enum | Type { Read, Write, Exception } |
パブリック関数
(since 6.1) | QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr) |
QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr) | |
virtual | ~QSocketNotifier() |
bool | isEnabled() const |
(since 6.1) bool | isValid() const |
(since 6.1) void | setSocket(qintptr socket) |
qintptr | socket() const |
QSocketNotifier::Type | type() const |
パブリックスロット
void | setEnabled(bool enable) |
シグナル
void | activated(QSocketDescriptor socket, QSocketNotifier::Type type) |
再実装された保護された関数
virtual bool | event(QEvent *e) override |
詳細説明
QSocketNotifierは、Qtのイベントループをファイル記述子に基づく他のイベントループと統合することを可能にします。ファイルディスクリプタのアクションはQtのメインイベントループ(QCoreApplication::exec() )で検出されます。
低レベルの(通常はプラットフォーム固有の)APIを使用してデバイスをオープンしたら、ファイル記述子を監視するソケットノーティファイアを作成することができます。ノーティファイアのコンストラクタにディスクリプタを渡すと、ソケットノーティファイアはデフォルトで有効になる。activated()シグナルは、ソケットノーティファイアのタイプに対応するイベントが発生したときに呼び出されたいスロットに接続する。
ディスクリプタを割り当てずにソケットノーティファイアを作成することもできる。この場合、ディスクリプタを取得した後にsetSocket() 関数を呼び出す。
ソケットノーティファイアには、読み込み、書き込み、例外の 3 種類がある。タイプはType enum で記述され、ソケットノーティファイアを構築する際に指定しなければならない。構築後、type() 関数を使用して決定できる。同じファイルディスクリプタの読み込みと書き込みの両方を監視する必要がある場合、ソケットノーティファイアを 2 つ作成する必要がある。また、同じソケットに同じ型(Read,Write,Exception)の2つのソケットノーティファイアをインストールすることはできない。
setEnabled() 関数を使用すると、ソケット通知器を無効にしたり有効にしたりすることができる。一般に、特に書き込みノーティファイアでは、ソケットノーティファイアを明示的に有効または無効にするこ とが望ましい。無効化されたノーティファイアは、ソケットイベントを無視する(ソケットノーティファイアを作成し ないのと同じ効果)。ノーティファイアの現在のステータスを調べるには、isEnabled() 関数を使用する。
最後に、socket() 関数を使用してソケット識別子を取得することができる。このクラスは QSocketNotifier と呼ばれるが、通常はソケット以外のデバイスに使用される。QTcpSocket とQUdpSocket はシグナルで通知を行うので、通常は QSocketNotifier を使用する必要はない。
QFile 、QProcess 、QTcpSocket 、QUdpSocketも参照のこと 。
メンバー・タイプ・ドキュメント
enum QSocketNotifier::Type
この列挙型は、ソケットノーティファイアが認識できる様々なイベントタイプを記述する。ソケットノーティファイアを作成する際に、このタイプを指定する必要がある。
同じファイルディスクリプタの読み込みと書き込みの両方を監視する必要がある場合、2 つのソケットノーティファイアを作成する必要がある。また、同じソケットに同じタイプ(Read, Write, Exception)のソケットノーティファイアを2つ設置することはできない。
定数 | 値 | 説明 |
---|---|---|
QSocketNotifier::Read | 0 | 読み込むデータがある。 |
QSocketNotifier::Write | 1 | データを書き込める。 |
QSocketNotifier::Exception | 2 | 例外が発生しました。これを使用しないことを推奨する。 |
QSocketNotifier() およびtype()も参照のこと 。
メンバ関数ドキュメント
[explicit, since 6.1]
QSocketNotifier::QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr)
与えられたtype でディスクリプタが割り当てられていないソケット通知器を構築する。引数parent はQObject のコンストラクタに渡される。
setSocket() 関数を呼び出して、監視用のディスクリプタを設定する。
この関数はQt 6.1で導入されました。
setSocket(),isValid(),isEnabled()も参照してください 。
QSocketNotifier::QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
与えられたparent でソケットノーティファイアを構築する。socket を有効にし、与えられたtype のイベントを監視する。
特に書き込みノーティファイアでは、ソケットノーティファイアを明示的に有効または無効にすることが望ましい。
Windows ユーザへの注意QSocketNotifier に渡されたソケットは、たとえブロッキングソケットとして作成されたとしても、ノンブロッ キングになる。
setEnabled() およびisEnabled()も参照のこと 。
[virtual noexcept]
QSocketNotifier::~QSocketNotifier()
このソケット通知器を破棄する。
[private signal]
void QSocketNotifier::activated(QSocketDescriptor socket, QSocketNotifier::Type type)
このシグナルは、ソケットノーティファイアが有効で、type に対応するソケットイベントが発生するたびに発行される。
socket パラメータにソケット識別子を渡す。
注意: これはプライベートシグナルである。シグナル接続で使用することはできるが、ユーザが発することはできない。
注意:このクラスでは、Signalactivatedがオーバーロードされています。関数ポインタ構文を使用してこのシグナルに接続するために、Qtはこの例に示すように関数ポインタを取得する便利なヘルパーを提供しています:
connect(socketNotifier, QOverload<QSocketDescriptor, QSocketNotifier::Type>::of(&QSocketNotifier::activated), [=](QSocketDescriptor socket, QSocketNotifier::Type type){ /* ... */ });
[override virtual protected]
bool QSocketNotifier::event(QEvent *e)
再インプリメント:QObject::event(QEvent *e).
bool QSocketNotifier::isEnabled() const
ノーティファイアが有効な場合はtrue
を返し、そうでない場合はfalse
を返す。
setEnabled()も参照 。
[since 6.1]
bool QSocketNotifier::isValid() const
ノーティファイアが有効(つまり、ディスクリプタが割り当てられている)であればtrue
を返し、そうでなければfalse
を返します。
この関数はQt 6.1で導入されました。
setSocket()も参照してください 。
[slot]
void QSocketNotifier::setEnabled(bool enable)
enable が真の場合、ノーティファイアは有効であり、そうでない場合、ノーティファイアは無効である。
ノーティファイアが有効な場合、type に対応するソケットイベントが発生すると、activated() シグナルを発信する。無効な場合、ソケットイベントを無視する(ソケットノーティファイアを作成しないのと同じ効果)。
書き込みノーティファイアは通常、activated() シグナルが発せられた直後に無効化する。
isEnabled() およびactivated()も参照の こと。
[since 6.1]
void QSocketNotifier::setSocket(qintptr socket)
このノーティファイアにsocket を割り当てます。
注意: 副次的にノーティファイアは無効になるので、再度有効にする必要があります。
この関数は Qt 6.1 で導入されました。
socket(),setEnabled(),isValid()も参照してください 。
qintptr QSocketNotifier::socket() const
このオブジェクトに割り当てられたソケット識別子を返す。
setSocket(),isValid(),type()も参照 。
QSocketNotifier::Type QSocketNotifier::type() const
コンストラクタに指定されたソケットイベントタイプを返す。
socket()も参照 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.