SSブログ

Qt Designerで追加したslotの削除とsignal/slotのconnect [Qt]

さて、slotを追加できたのはいいんですが、どうやって削除すればいいんでしょうか・・? いろいろクリックしていても、削除の方法が出てこなさげです。

今回、追加ボタンの名前を変えたいだけなので、試しにボタンの名前を「pushButton」から「addButton」に変えてみました。そして、右クリック→「Go to slot」したところ、また新しいslotが追加されました・・。できたスロットは「on_addButton_clicked」。名前は固定ですかね・・? もしかしたら、これで古い方は削除すればいいだけなのかもしれません。

よくわかりませんが、これで実行してみましたところ、新しく作成したslotが呼ばれていました・・。じゃあ、削除は手動ですかね・・。と言うことで、前々回前回追加した項目は手動で削除することにします。

で、実行。で、問題無く動作しました。と、それはいいんですが、ソースを見てもsignalとslotをconnectしている箇所が見当たりません・・。何故つながってるんでしょうか・・?

UI関連のファイルに定義されているのかなと思い、「mainwindow.ui」をテキストエディタで見てみたところ、ソースの末尾に「<slots>」と言う項目が追加されていました。

10113000.png
スロットの記述はありました


これ、最初に作成したslotですね・・。これを消すにはどうすればいいんでしょう・・・?

目的のものが無かったので、次に「ui_mainwindow.h」を覗いてみたところ、「Ui_MainWindowClass」と言うクラスの「setupUi()」と言う関数の中に「QMetaObject::connectSlotsByName(MainWindowClass);」との記載があります。これがそうなんですかねぇ・・。

10113001.png
これ?


と言うことで、「QMetaObject」の説明を見てみます。そこの「connectSlotsByName()」関数の説明を見てみると、全ての子オブジェクトから「void on_<object name>_<signal name>(<signal parameters>);」と言う形のslotを探して接続するとのこと。と言うことで、Qt Designerを使う時はsignalが自動で作成されるslotに自動でconnectされる様です。・・・結構、やっつけで作った感じがしないでもないですね。

・・・オブジェクトの名前を変えた時に追随してくれるといいんですが、それは無さげですね・・。「リファクタリング」っていうメニューでも無いんかな・・?


以上で、Qt Designerでのslotの追加と接続の方法がわかったので、次回より各オブジェクト名を変更して、追加して行くことにします。


つづく。






nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

ブログを作る(無料) powered by SSブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。