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>」と言う項目が追加されていました。
スロットの記述はありました
これ、最初に作成したslotですね・・。これを消すにはどうすればいいんでしょう・・・?
目的のものが無かったので、次に「ui_mainwindow.h」を覗いてみたところ、「Ui_MainWindowClass」と言うクラスの「setupUi()」と言う関数の中に「QMetaObject::connectSlotsByName(MainWindowClass);」との記載があります。これがそうなんですかねぇ・・。
これ?
と言うことで、「QMetaObject」の説明を見てみます。そこの「connectSlotsByName()」関数の説明を見てみると、全ての子オブジェクトから「void on_<object name>_<signal name>(<signal parameters>);」と言う形のslotを探して接続するとのこと。と言うことで、Qt Designerを使う時はsignalが自動で作成されるslotに自動でconnectされる様です。・・・結構、やっつけで作った感じがしないでもないですね。
・・・オブジェクトの名前を変えた時に追随してくれるといいんですが、それは無さげですね・・。「リファクタリング」っていうメニューでも無いんかな・・?
以上で、Qt Designerでのslotの追加と接続の方法がわかったので、次回より各オブジェクト名を変更して、追加して行くことにします。
つづく。
今回、追加ボタンの名前を変えたいだけなので、試しにボタンの名前を「pushButton」から「addButton」に変えてみました。そして、右クリック→「Go to slot」したところ、また新しいslotが追加されました・・。できたスロットは「on_addButton_clicked」。名前は固定ですかね・・? もしかしたら、これで古い方は削除すればいいだけなのかもしれません。
よくわかりませんが、これで実行してみましたところ、新しく作成したslotが呼ばれていました・・。じゃあ、削除は手動ですかね・・。と言うことで、前々回と前回追加した項目は手動で削除することにします。
で、実行。で、問題無く動作しました。と、それはいいんですが、ソースを見てもsignalとslotをconnectしている箇所が見当たりません・・。何故つながってるんでしょうか・・?
UI関連のファイルに定義されているのかなと思い、「mainwindow.ui」をテキストエディタで見てみたところ、ソースの末尾に「<slots>」と言う項目が追加されていました。
スロットの記述はありました
これ、最初に作成したslotですね・・。これを消すにはどうすればいいんでしょう・・・?
目的のものが無かったので、次に「ui_mainwindow.h」を覗いてみたところ、「Ui_MainWindowClass」と言うクラスの「setupUi()」と言う関数の中に「QMetaObject::connectSlotsByName(MainWindowClass);」との記載があります。これがそうなんですかねぇ・・。
これ?
と言うことで、「QMetaObject」の説明を見てみます。そこの「connectSlotsByName()」関数の説明を見てみると、全ての子オブジェクトから「void on_<object name>_<signal name>(<signal parameters>);」と言う形のslotを探して接続するとのこと。と言うことで、Qt Designerを使う時はsignalが自動で作成されるslotに自動でconnectされる様です。・・・結構、やっつけで作った感じがしないでもないですね。
・・・オブジェクトの名前を変えた時に追随してくれるといいんですが、それは無さげですね・・。「リファクタリング」っていうメニューでも無いんかな・・?
以上で、Qt Designerでのslotの追加と接続の方法がわかったので、次回より各オブジェクト名を変更して、追加して行くことにします。
つづく。
コメント 0