2011-03-01 4 views
1

그래서 여러 메뉴 (기본 메뉴 중 하나 및 일부 상황에 맞는 메뉴)에 표시하려는 동작이 있습니다. 메뉴 항목 텍스트를 메뉴와 약간 다르게 지정하고 싶습니다. (니모닉을 고유하게 만들고 각 컨텍스트에서 필요에 따라 더 자세한 내용을 표시합니다).텍스트가 다른 두 개의 QMenus에서 동일한 QAction을 사용하는 방법은 무엇입니까?

MFC에서 (각자의 메뉴 항목이 따로 정의되어 있으므로이 순간부터 마이그레이션의 즐거움이있었습니다.) 각 메뉴의 항목이 따로 정의되어 있으며 핸들러에 연결된 동일한 ID에 매핑 될 수있었습니다. 그래도 Qt에서 QAction은 텍스트/아이콘/등뿐만 아니라 비헤이비어를 캡슐화합니다. 그래서 나는 그것이 사용되는 곳에 따라 다른 텍스트를 반환하는 것을 직접적으로지지한다고 가정하지 않습니다.

그 상황에 특정 텍스트가있는 "프록시"QAction을 만들기 위해, 각 위치, 이것이 처리하고 단순히 원래 QAction의 하나에 연결의 triggered() 신호를 가지고하는 방법에 대한 내 생각. 하지만 먼저이 방법에 접근하는 쉬운 방법이 있는지 확인해야한다고 생각했습니다.

답변

4

MFC에 대해 모르겠지만 Qt-QAction은 인터페이스입니다. 하나의 QAction 객체는 표시 할 텍스트를 하나만 가질 수 있습니다. 그러나 실제 액션 QAction은 Qt가 SLOT을 호출하는 것으로 구현할 것입니다. 그런 다음 같은 슬롯을 가리키는 많은 인터페이스 (또는 QActions 객체)를 가질 수 있습니다. 동일한 작업을 수행하려는 모든 QAction 객체를 동일한 슬롯에 연결하면됩니다.

희망이 도움이됩니다.

+0

오른쪽, 감사합니다. 나는 그 방법을 보지 못했습니다. 왜냐하면 기존의 기술을 사용하는 곳은 QAction을 서브 클래스 화하고 실제로 같은 클래스의 신호에 연결된 해당 클래스의 슬롯에서 작업 (또는 그 양)을 수행하기 때문입니다. . – Owen

+0

그럼 공개 슬롯이 아니라면 언제든지 신호를 신호에 연결할 수 있습니다. – zkunov

1

제안 된 솔루션이 가장 간단합니다. 메뉴가 활성화 될 때 동작의 텍스트를 동적으로 변경할 수는 있지만보기가 복잡합니다.

관련 문제