「Qtの基礎 - シグナルとスロット」の版間の差分

ナビゲーションに移動 検索に移動
124行目: 124行目:
     }
     }
  };
  };
</syntaxhighlight>
<br><br>
== Qt Designerで設定したシグナルおよびスロット ==
Qt Designerで設定したシグナルおよびスロットは、<code>connect</code>関数を使用せずに呼び出すことができる。<br>
<br>
ソースコード上で<code>connect</code>関数を使用せずにスロット関数が呼び出される理由を以下に示す。<br>
まず、<code>QWidget</code>クラスや<code>QMainWindow</code>クラス等を継承した派生クラスにおいて、コンストラクタに自動生成されるソースコードで、以下の記述がある。<br>
ui->setupUi(this);
<br>
次に、<code>setupUi</code>メソッドの定義の最後に、以下の記述がある。<br>
以下に示す<code>QMetaObject::connectSlotsByName</code>メソッドは、オブジェクト(引数)が持つ全てのスロットに対して、<br>
<code>on_<子オブジェクト名>_<子オブジェクトのシグナル名></code>を満たすスロット名の存在を確認する。<br>
<syntaxhighlight lang="c++">
void setupUi(QMainWindow *MainWindow)
{
    // ...略
    QMetaObject::connectSlotsByName(MainWindow);
}
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー