QT学習小結の信号と溝


信号とスロット関数は私たちがQTを学ぶために必要な基礎知識であり、今日は私がQTを学ぶためのいくつかのまとめを共有しましょう.
信号スロット機構はQtプログラミングの基礎である.信号スロットにより、Qtの各コンポーネントが相手を知らないまま互いに通信できるようにすることができる.
スロット関数は通常のC++メンバー関数と大きな違いはありません.virtualを使用することもできます書き換えることができます.public、protectedまたはprivateの;他のC++関数から呼び出すことができます.パラメータは任意のタイプで使用できます.区別といえば、スロット関数は1つの信号に接続することができ、この信号が発生すると自動的に呼び出されることができる.
信号とスロット関数の接続はconnect関数で行うことができます.
connect(sender,SIGNAL(signal()),receive,SLOT(slot()));

注意すべき点:
1.1つの信号を複数のスロットに接続することができる(スロット関数が呼び出される順序はランダムである)
connect(sender,SIGNAL(signal()),this,SLOT(slot_1()));connect(sender,SIGNAL(signal()),this,SLOT(slot_2()));

2、複数の信号は同一のスロット関数を接続することができる
connect(sender,SIGNAL(signal_1()),this,SLOT(slot()));connect(sender,SIGNAL(signal_2()),this,SLOT(slot()));

3、一つの信号は別の信号に接続することができる
connect(sender,SIGNAL(signal_1()),this,SIGNAL(signal_2()));

4、信号とスロット関数の接続をキャンセルすることができる
disconnect(sender,SIGNAL(signal()),this,SLOT(slot()));

5、信号とスロット関数のパラメータの個数、タイプ及び出現順序は一致しなければならない.また、信号のパラメータの個数がスロット関数より多い場合、信号の多いパラメータは無視される
connect(sender,SIGNAL(signal(int,const Qstring &)),this,SLOT(slot(int b,const Qstring &)));connect(sender,SIGNAL(signal(int,const  Qstring &)),this,SLOT(slot(int)));//  const  Qstring &     

6、マクロ定義はsignalとslotのパラメータに使用できない
7、関数ポインタは信号とスロット関数のパラメータとすることができず、同時に信号とスロット関数にもデフォルトのパラメータがあることができない
8、友元宣言は信号またはスロット関数宣言領域内に位置できない
9、信号とスロットはテンプレート類のパラメータを携帯できない
10、ネストされたクラスは信号とスロット関数領域内に置くことができず、信号やスロット関数も持つことができない
信号とスロットメカニズムを用いる場合,デッドサイクル,すなわちスロット関数で受信した信号を再送信しないように注意する.