如何使用信号/插槽机制获取发件人窗口小部件?

sor*_*h-r 56 qt4

可以将多个信号绑定到一个插槽(不是?).那么,有没有办法了解哪个小部件发送信号?我正在寻找像sender.NET中的事件参数之类的东西

小智 118

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 ) 
   { 
      ...
   }

}
Run Code Online (Sandbox Code Playgroud)


Arn*_*nce 6

是的,您可以将多个信号连接到一个插槽.在这种情况下,您将用于QSignalMapper区分信号的来源.该解决方案仅限于无参数信号.你可以在这里看到一个例子.