2010-01-30 4 views
1

나는 "_0"에서 "_5"까지 6 개의 Button을 가지고 있습니다. 사용자가 해당 숫자 키를 누를 때마다 각 단추를 누르기를 원합니다. 지금은 Alt + 해당 숫자 키를 눌러야합니다.Gtk에서 "alt"마스크가 필요없는 버튼 니모닉을 만들 수 있습니까?

각 단추에 단축키를 지정하여이 문제를 해결할 수 있지만 그다지 똑같은 것은 아닙니다. 가속기를 사용하면 키를 누르면 즉시 버튼의 Clicked 신호가 트리거됩니다. 니모닉을 사용하면 버튼을 누를 때 버튼이 눌리고 버튼을 놓을 때까지 Clicked 신호가 트리거되지 않습니다. 나는 사용자가 무슨 일이 일어나고 있는지 보도록 도와주기 때문에 이것을 선호한다.

니모닉의 동작을 얻을 수있는 방법이 있습니까?하지만 Alt 키가 필요하지 않습니까?

답변

1

gtk 창은 윈도우 클래스의 이벤트 마스크 설정으로 키 이벤트를 catch 할 수 있습니다. 내가 GTKmm (C++ 바인딩)을 사용하기 때문에 콜백과 키 타입을 가진 것보다 훨씬 더 구체적 일 수는 없지만 접근 방식은 유사해야합니다. 기본적으로 창에서 필요한 키 이벤트를 잡으면 코드에서 버튼 누르기를 호출 할 수 있습니다. 그러나 창은 선택되어 있어야합니다 (초점).

+0

감사합니다. 어떤 방법으로'Button '을 사용할 것인가? 'Press()'는 아무 것도하지 않는 것 같습니다. 'Click()'은 작동하지만 액셀레이터를 추가 할 때와 똑같이 동작합니다. GTKmm에서 어떻게하는지 알고 있다면 GTK # 버전을 알 수있을 것입니다. –

+1

Gtk :: Widget 클래스에 대한 gtkmm 문서를 참조하십시오. set_state 함수 호출이있다. 버튼 누름시에는 GTK :: STATE_ACTIVE를, 릴리스시에는 STATE_NORMAL 또는 STATE_SELECTED를 전달하십시오. –

+0

그거야. 이것은 지저분하지만 아무것도없는 것보다 낫습니다. –

관련 문제