複数のオブジェクトから1つのSlotへの接続方法
-
shihoです。
いつもお世話になっています。現在、Qt Creator 2.4.1 でGUI 開発を行っています。
QTextEdit を3個作成し、それぞれのオブジェクト名を1st, 2nd, 3rdとしています。
QTextEditをマウスでクリックした際に、別ウィンドウを開く処理を作成したいと思っています。
そこで、
1st のselectionChanged() シグナル選択時、スロット名 setselectionChanged()、
2nd のselectionChanged() シグナル選択時、スロット名 setselectionChanged()、
3rd のselectionChanged() シグナル選択時、スロット名 setselectionChanged()とすべて同じスロットをコールたいのですが、
setselectionChanged() 内で、どのオブジェクト(シグナル)から呼ばれたのかを判断する方法が
わからず困っています。オブジェクトの読み出し方法などがあれば教えてください。
以上、よろしくお願いします。
-
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