차라리 별도 수신기 슬롯 기능을 갖는보다 어레이의 개별 요소를 변경 스핀 컨트롤 블록은, 방금 신호에서 메시지를 전송을 제어하는 지정 원했던Qt는 슬롯
할 수 QSignalMapper로이 작업을 수행하십시오.
spin0 = new QDoubleSpinBox;
connect(spin0,SIGNAL(valueChanged(double)),this,SLOT(handler(0,double));
spin1 = new QDoubleSpinBox;
connect(spin1,SIGNAL(valueChanged(double)),this,SLOT(handler(1,double));
....
private slot:
void handler(int element,double value);
그러나 수신기 기능은 GUI의 많은 세부 사항을 알아야합니다. 모든 스핀 컨트롤 개체에 액세스 할 수 있습니다. –
나는 내가 너에게 따라 오는지 잘 모르겠다. 핸들러에서 각 스핀 컨트롤의 객체 이름을 "0", "1"등으로 설정하면'sender() -> objectName(). toInt()'를 사용하여 위에서 언급 한 내용을 달성 할 수 있습니다 . 핸들러는 QObject가 신호를 보낸 것 이상을 알 필요가 없습니다. claify하기 위해서'sender()'는 handler()가 상주하는 객체의 함수이다. 모든 스핀 컨트롤에 대해 알 필요가 없습니다. –
개체 이름을 사용하는 것이 좋습니다. 그렇습니다. 좋은 해결책입니다. 나는 발신자()를 처리기에 gui를 너무 가깝게 연결 한 spin0 ptr과 비교할 생각을했습니다. –