信号をスロットに接続するには、わかっている限り、信号のパラメータがスロットのパラメータと一致する必要があります。ですから、例えば:信号を一定値のスロットに接続する
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
しかし、私は、信号の呼び出しパラメータの異なる量を持っているスロットを持っていますが、常にスロットに一定の値を渡したい場合はどのような。例えば、コードの上記部分の使用:ボタンが押されるたびに
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
または他の言葉では、それは偽のパラメータでsetDockWidget()
関数を呼び出します。これは可能ですか?
この答えはもはや実際には有効ではありません。なぜなら、C++ 11のQt5構文はこの目的のためにラムダを使うのがとても簡単だからです。 –
@André、反対側では、あなたはちょうど 'プロキシスロットを作って、それは望んでいるものを呼び出すことができます '。今度は – Lol4t0
できます。しかし余分なスロットとは、外部の呼び出し(たとえプライベートなスロットが外部から呼び出せても)にさらされ、複数の場所に渡ってコードの周りに広がることを望まない、あなたのヘッダーにもっとたくさんのものを意味します。渡す値を格納するために追加のメンバ変数が必要な場合もあります。したがって、クラスに状態を追加します。ラムダソリューションは非常に洗練されているため、ソリューションIMOとしてのプロキシスロットの導入が不適格となります。 –