複数のオブジェクトから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



  • shihoです。

    早速の回答ありがとうございます。

    sender()メソッドを使用して、SIGNALのオブジェクトを取り出すことができました。

    今回は、sender()メソッドを使用しましたが、QSignalMapperを使用する方法も勉強として試してみたいと思います。

    いつもありがとうございます。


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.