[解決済み] Qtのイベントとシグナル/スロット
質問
Qtの世界では、イベントとシグナル/スロットはどう違うのでしょうか?
一方が他方を置き換えるのでしょうか?イベントはシグナル/スロットを抽象化したものなのでしょうか?
どのように解決するのですか?
この Qt ドキュメント がおそらく最もよく説明しています。
Qt では、イベントはオブジェクトであり であり、抽象的な
QEvent
クラスから派生したオブジェクトで アプリケーションの中で、あるいは アプリケーションの中で、あるいは アプリケーションの内部で、あるいは外部の活動の結果として起こったことで を表します。 イベントを受信して処理することができます。 のインスタンスによって受信され、処理されます。QObject
サブクラスのどのインスタンスでも受け取ることができます。 しかし、それらは特に ウィジェットに関連します。このドキュメントでは イベントがどのように配信され、処理されるかを このドキュメントでは、典型的なアプリケーションにおいて、イベントがどのように配信され、処理されるかを説明します。
つまり、イベントとシグナル/スロットは、同じことを達成する2つの並行したメカニズムなのです。一般に、イベントは外部のエンティティ (たとえばキーボードやマウスホイール) によって生成され、イベントループを通じて
QApplication
. 一般に、コードを設定しない限り、イベントを生成することはありません。イベントをフィルタリングするために
QObject::installEventFilter()
でフィルタリングするか、適切な関数をオーバーライドしてサブクラス化されたオブジェクトのイベントを処理します。
シグナルとスロットは、生成と受信がより簡単で、任意の2つの
QObject
サブクラスを接続することができます。これらはメタクラスを通して処理されますが(詳しくは moc_classname.cpp ファイルを見てください)、あなたが作成するクラス間通信のほとんどは、おそらくシグナルとスロットを使用することになるでしょう。シグナルはすぐに配信されるか、キューを介して遅延させることができます(スレッドを使用している場合)。
シグナルを生成することができます。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] g++とgccの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー