1

ウィジェットベースのクラスがあります。プライベートQStringメンバーが 2 つあります。値が変更されたときにシグナルを使用して通知できるようにしたいと考えています。したがって、両方の変数に対して、セッターとゲッターがあります。私も信号機を持っています。

  • 質問: 両方とも同じ信号を使用できますか? または、2 つの独立した信号を定義する必要がありますか?

次に、そのシグナルを同じクラスのスロットにバインドしたいと思います(シグナルを発行する代わりにスロットを呼び出すことができることはわかっていますが、シグナルを使用したいです)。

  • それらを接続するにはどうすればよいですか?私は試した:

    connect( &invoiceFilterDirectionPart, SIGNAL(valueChanged(QString)), this, SLOT(invoiceFilterDirectionPart_valueChanged(QString)) );
    

invoiceFilterDirectionPartしかし、それはQStringコンパイルされません-connect最初の引数がQObject*

connectステートメントで使用できますthisが、単一の信号に関する限り、両方のスロットがトリガーされると思いますか? オプション2つの独立したシグナルのみがステートメントで使用thisされていconnectます-または何かが欠けていますか?

  • 最後の質問:Q_PROPERTYこの作業をすべて行うには が必要ですか? 私が最初にそれを使用したとき、それはある種の魔法のマクロであると思います-私がそれを使用したとき、次のように:

    Q_PROPERTY(QString invoiceFilterContractorPart 
        READ getInvoiceFilterContractorPart
        WRITE setInvoiceFilterContractorPart
        NOTIFY valueChanged
    )
    

変数、セッター、ゲッター、および通知シグナルを自動的に生成すると思いました。悲しいことに-それは起こりませんでした;)。言及されたアイテムが存在しないと叫んだだけです。それだけですか?良い使用例がなかなか見つからない…

4

1 に答える 1