Nice programing

신호 / 슬롯 메커니즘으로 발신자 위젯을 얻는 방법은 무엇입니까?

nicepro 2020. 12. 31. 23:28
반응형

신호 / 슬롯 메커니즘으로 발신자 위젯을 얻는 방법은 무엇입니까?


하나 이상의 신호를 하나의 슬롯에 바인딩 할 수 있습니다 (그렇지 않습니까?). 그렇다면 어떤 위젯이 신호를 보내는 지 이해할 수있는 방법이 있습니까? sender.NET에서 이벤트 인수 와 같은 것을 찾고 있습니다.


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

}

예, 여러 신호를 하나의 슬롯에 연결할 수 있습니다. 이 경우 QSignalMapper신호 소스를 구별하는 데 사용할 수 있습니다. 이 솔루션은 매개 변수가없는 신호로 제한됩니다. 여기 에서 예를 볼 수 있습니다 .

참조 URL : https://stackoverflow.com/questions/4046839/how-to-get-sender-widget-with-a-signal-slot-mechanism

반응형