사용자 인터페이스에서 특정 키를 누르기를 원하는 사용자 인터페이스가 있습니다. 그림의 keypressfcn 콜백에 대한 함수를 정의하려고 시도했지만 다른 UI 요소가 활성 요소 인 경우 해당 요소의 keypressfcn이 호출됩니다 (비어 있음). UI 내의 모든 하위 요소에 동일한 keypressfcn 함수 핸들을 할당하지 않고 전체 그림에 대해 키 누르기를 캡처하는 방법은 무엇입니까?부모에게 전달되는 Matlab 이벤트
답변
내가 원하는 것을 WindowKeyPressFcn 콜백에서 찾았습니다. 이는 그림의 속성이지만 조심스럽게 말합니다. 활성 요소 인 동안 키 누르기를 캡처합니다 (활성 요소가 무엇인지에 관계없이). 예를 들어 편집 요소에 포커스가있는 경우 WindowKeyPressFcn이 입력 될 때 실행됩니다.
각각 uicontrol
의 KeyPressFcn
을 정의해야 할까봐 걱정됩니다. 생각해보십시오. Matlab을 설계했다면 다른 uicontrols
에 대해 다른 키 누르기 기능을 할당 할 수있는 옵션을 동시에 열어 놓고 모든 uicontrols
에 하나의 마스터 기능 만 사용할 수있는 방법은 무엇입니까?
각각 새로운 uicontrol
은이를 수행하고 싶다는 것을 알고 있어야합니다.이 작업은 KeyPressFcn
과 동일합니다.
이 작업을 수행하는 가장 쉬운 방법은
function KeyPressFcnFwd(obj,event)
prn = get(obj, 'parent')
fcn = get(prn, 'KeyPressFcn');
fcn(prn,event);
end
같은 몇 가지 일반적인 함수를 작성하고 다음과 같이 uicontrols을 정의하는 것입니다 :이 일부 라디오 버튼에 키 입력을 할 것 같은 그 일을
button = uicontrol(...
'style', 'pushbutton', ...
...
'KeyPressFcn', @KeyPressFcnFwd);
부모의 KeyPressFcn
(이는 라디오 그룹 임)으로 전화를 걸면 부모의 KeyPressFcn
(uipanel)이 호출되어 부모의 012로 통화가 전달됩니다, 마지막으로 귀하의 그림은 KeyPressFcn
입니다.
요약하면 uicontrol
이 얼마나 깊게 중첩되어 있더라도 통화는 항상 그림으로 전달됩니다.
는 "주"그림이 생성되는 함수에 중첩 된 함수로이 함수를 정의하면, 당신은 그것을 할 수있는보다 효율적으로 모든 비트 : 당신이이 없어 너무
function main %# toplevel function
...
mainFig = figure(...) %# your main figure
...
%# nested function
function KeyPressFcnFwd(obj,event)
fcn = get(mainFig, 'KeyPressFcn');
fcn(mainFig,event);
end
...
%# Function to build the GUI
%# can be a subfunction, nested function or external function
populateMainWin(mainFig, @KeyPressFcnFwd);
...
end
KeyPressFcn
님의 전체 트리를 호출하는 오버 헤드가 발생했습니다. 내 코드를 읽을 유지되도록
이 보일러의 많은 잠재적으로 (그리고이 훌륭한 후보), 나는 보통
function handle = uibutton(parent, text, varargin)
handle = uicontrol(...
'parent', parent, ...
'style' , 'pushbutton', ...
'units' , 'normalized', ...
'string', text, ...
'KeyPressFcn', @KeyPressFcnFwd, ...
varargin{:});
end
같은 일부 shorthands을 정의합니다.
- 1. nextResponder를 통해 부모에게 전달되는 이벤트를 식별하는 방법은 무엇입니까?
- 2. 부모에게 MouseMove 이벤트 전달 원활하게
- 3. .live()가 처리 할 때 부모에게 전달되는 자식 클릭 이벤트를 중지 할 수 있습니까?
- 4. MATLAB 중첩 된 이벤트 알림?
- 5. OOP - C에서 전달되는 메시지
- 6. 여러 버튼에 대한 하나의 클릭 핸들러가 부모에게 이벤트 전파를 중지합니까?
- 7. 여러 폼을 통해 부모에게 전달할 사용자 지정 이벤트 체인
- 8. 중첩 된 UpdatePanel은 부모에게 새로
- 9. 자녀가없는 부모에게 문의
- 10. 부모에게 mousedown div 봉쇄
- 11. iframe의 부모에게 jquery로드
- 12. TImage가 부모에게 정렬되지 않습니다.
- 13. inherited_resources - 부모에게 가십시오
- 14. 하위 개체에서 부모에게 액세스
- 15. MATLAB : drawnow
- 16. 부모에게 축약 형 JS 추가하기
- 17. 부모에게 Unity3D 지역 위치 관계
- 18. WPF TextBlock StringFormat 부모에게 바인딩
- 19. jquery에서 부모에게 가장 빠른 방법
- 20. FocusVisualStyle 부모에게 속성을 바인딩하는 템플릿
- 21. 떠 다니는 div가 부모에게 충실합니까?
- 22. 부모에게 중첩 된 리소스로 연결
- 23. 변경 사항을 부모에게 알리는 방법
- 24. RenderAction - 부모에게 영향을주지 않고 사용하기
- 25. 부모에게 자바 스크립트 기능 추가
- 26. Android/Java (?) - 자녀로부터 부모에게 액세스
- 27. 부모에게 상대적으로보기를 배치하는 방법은 무엇입니까?
- 28. 부모에게 예외가 생기지 않는 지브롤트
- 29. 어버이의 부모에게 removeView()를 호출합니다.
- 30. 동일 도메인 차단 Iframe 부모에게