複数のオブジェクトから1つのSlotへの接続方法
-
wrote on 11 Sept 2012, 07:16 last edited by
shihoです。
いつもお世話になっています。現在、Qt Creator 2.4.1 でGUI 開発を行っています。
QTextEdit を3個作成し、それぞれのオブジェクト名を1st, 2nd, 3rdとしています。
QTextEditをマウスでクリックした際に、別ウィンドウを開く処理を作成したいと思っています。
そこで、
1st のselectionChanged() シグナル選択時、スロット名 setselectionChanged()、
2nd のselectionChanged() シグナル選択時、スロット名 setselectionChanged()、
3rd のselectionChanged() シグナル選択時、スロット名 setselectionChanged()とすべて同じスロットをコールたいのですが、
setselectionChanged() 内で、どのオブジェクト(シグナル)から呼ばれたのかを判断する方法が
わからず困っています。オブジェクトの読み出し方法などがあれば教えてください。
以上、よろしくお願いします。
-
wrote on 11 Sept 2012, 10:08 last edited by
connect された SLOT が呼び出された場合、
SIGNAL が発生したオブジェクトは [[Doc:QObject]] の sender() メソッドで取得できます。また、上記の場合は [[Doc:QSignalMapper]] を使うのも手でしょう。
複数のオブジェクトのSIGNALをまとめて、idを付けた別のSIGNALを発行します。以下のドキュメントも参考にしてください。
http://qt-project.org/doc/qt-4.8/signalsandslots.html#advanced-signals-and-slots-usage
http://doc.trolltech.com/qq/qq10-signalmapper.html
http://www.off-soft.net/ja/develop/qt/qt1-2-2.html -
wrote on 12 Sept 2012, 01:19 last edited by
shihoです。
早速の回答ありがとうございます。
sender()メソッドを使用して、SIGNALのオブジェクトを取り出すことができました。
今回は、sender()メソッドを使用しましたが、QSignalMapperを使用する方法も勉強として試してみたいと思います。
いつもありがとうございます。
1/3