카레 슬롯이 있습니까? 어쩌면 curryng과 비슷한 것이 있을까요?qt 슬롯 currying
답변
QSignalMapper를 사용하여 일부 신호를 연결 한 다음 자신의 신호를 매개 변수가 연결된 대상 슬롯에 연결할 수 있습니다. 물론
// connect signal to mapper
signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button1, QString("param1"));
signalMapper->setMapping(button2, QString("param2"));
connect(button1, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(button2, SIGNAL(clicked()), signalMapper, SLOT(map()));
// connect mapper signal to slot
connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(originalSlot(const QString &)));
두 번째'connect' 호출은'button1'이 아니라'button2'라고 말해야한다고 생각합니다. 이 기술을 유용하게 만드는 마법은 신호 매퍼가 고유 한 발신자와 다르게 반응하게하는 마법입니다. – Wyck
Qt 신호/슬롯을 사용하여 바인딩 인수를 사용할 수 없습니다. 당신은 boost :: signals과 boost :: bind를 대신 사용하여 이러한 기능을 구현해야합니다.
LibQxt도 옵션입니다. 내 대답을 참조하십시오. –
Qt를 직접 사용할 수는 없지만 LibQxt을 통해 일부 바인딩/currying을 사용할 수 있습니다. 예를 들어 및 QxtBoundFunction의 문서에서 : 지금까지
, 가장 일반적인 예상 사용은 신호를 제공하는 일이없는 슬롯에 매개 변수를 제공하는 것입니다. Qt를 처음 사용하는 많은 개발자는 다음과 같은 코드를 작성하려고합니다. \ code connect (button, SIGNAL (클릭)(), lineEdit, SLOT (setText ("Hello, world")))); \ endcode 숙련 된 Qt 개발자는 즉시 결함을 발견합니다. 일반적인 해결책 은 원하는 기능을 호출하는 짧은 한 줄 래퍼 슬롯을 만드는 것입니다. 일부 영리한 개발자는 QSignalMapper를 사용하여 int 또는 QString 매개 변수가 하나만 필요한 슬롯을 처리 할 수도 있습니다.
QxtBoundFunction 이전 연결 문은 다음과 기록 될 수 있습니다 : 은 (버튼, 신호가 (클릭하여 연결 \ 코드를()), QxtMetaObject :: 바인드 (lineEdit, SLOT (의 setText (QString)), Q_ARG (QString , "Hello, world!")))); \ code 새로운 슬롯을 만들지 않고 동일한 결과를 얻거나 더 나쁜 경우에는 상수 값을 전달하기 위해 전체 개체 을 수행해야합니다.
또한 QXT_BIND 매크로를 사용하면 신호의 매개 변수를 QYAR 매크로를 사용하여 에 제공된 상수 인수와 함께 재배치, 건너 뛰기 또는 전달할 수 있습니다. 예를 들어 제네릭 함수에 상태 저장 콜백을 제공하는 데 사용할 수 있습니다.
많은 종류의 기능을 바인딩 할 수 있습니다. 가장 일반적인 바인딩은 Qt 신호와 슬롯에 적용되지만 표준 C/C++ 기능도 바인딩 할 수 있습니다. 향후 개발에서는 C++ 멤버 함수 인 에 바인딩 할 수있는 기능을 추가 할 수 있으며 개발자는 필요에 따라 더 유연한 사용자 지정 QxtBoundFunction 하위 클래스를 만들 수 있습니다.
일부 패치를 LibQxt에 제출했지만 직접 사용하지 않았으므로 마일리지가 다를 수 있습니다.
, 지금 우리는 Qt는 5가 임의의 호출 객체에 신호를 연결하는 기능 : 당신이 마음에 무엇을
connect(sender, &MyClass::mySignal, receiver, std::bind(&OtherClass::mySlot, boundArg));
connect(sender, &MyClass::mySignal, receiver, [=] { receiver->mySlot(boundArg); });
- 1. QT 신호 슬롯 질문
- 2. Qt - 신호 대신 슬롯 표시
- 3. QT 신호 및 슬롯 시각화
- 4. Qt 신호/슬롯 및 스레드
- 5. Qt 슬롯 및 복수 통화에 관한 질문
- 6. QT 신호 및 슬롯 함수 서명
- 7. QT 루비 바인딩 신호 슬롯 루비
- 8. Qt - 버튼 클릭시 닫기 (신호/슬롯 문제)
- 9. 작업자 스레드 대신 Qt 신호/슬롯 사용
- 10. 초급 Qt 신호 및 슬롯 질문
- 11. 모든 Qt 신호/슬롯 연결 확인
- 12. 스키마의지도에 대한 currying
- 13. 신호 슬롯 메커니즘이 아닌 Qt 4에서 Q_OBJECT 매크로가 필요한 기능
- 14. 내 슬롯이 Qt Creator 신호/슬롯 편집기에 나열되지 않았습니다
- 15. 다중 상속을 사용하는 Qt 신호 및 슬롯 사용
- 16. 기존의 콜백에 비해 Qt 신호/슬롯 메커니즘을 사용해야합니까?
- 17. QT 신호 및 슬롯 용 UML 유사 모델링 도구는 무엇입니까?
- 18. QT 슬롯 및 상속 : 왜 내 프로그램이 하위 클래스 대신 부모에 연결하려고합니까? QT 프로그램에서
- 19. Qtoolbutton을 사용한 신호 및 슬롯
- 20. Qt : 이벤트가 순서대로 처리됩니까?
- 21. 하위 단추에서 슬롯 제거
- 22. 타임 슬롯 SQL 쿼리
- 23. GTK의 신호와 슬롯
- 24. PHP/PDO의 MySQL 슬롯
- 25. 여러 서명, 한 슬롯
- 26. PyQt의 신호와 슬롯
- 27. PyQt - 파라미터가있는 슬롯
- 28. 슬롯 기능이 호출되지 않음
- 29. 계획 관리 슬롯/세션
- 30. Qt에서 동적 슬롯 만들기
당신의 예를 적어주세요 수 있습니까? –
http://stackoverflow.com/questions/3166051/binding-arguments-to-signals-slots –