1つのスロットに複数の信号をバインドすることは可能です(そうではありませんか?)。だから、どのウィジェットが信号を送信するかを理解する方法はありますか? .NETのイベントのsender
引数のようなものを探しています
QObject::sender()
はジョブを実行します。
次の例のように、スロットで QObject::sender()
を使用します。
void MainWindow::someSetupFunction( void )
{
...
connect( _foobarButton, SIGNAL(clicked()), this, SLOT(buttonPressedSlot()) );
}
void MainWindow::buttonPressedSlot()
{
// e.g. check with member variable _foobarButton
QObject* obj = sender();
if( obj == _foobarButton )
{
...
}
// e.g. casting to the class you know its connected with
QPushButton* button = qobject_cast<QPushButton*>(sender());
if( button != NULL )
{
...
}
}
はい、1つのスロットに複数の信号を接続できます。この場合、QSignalMapper
を使用して、信号のソースを区別します。このソリューションは、パラメータのない信号に制限されています。あなたは例を見ることができます here 。