13,009
回編集
| 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> | ||