2017-09-19 11 views
0

마우스 커서가 GtkListStore 모델과 연결된 GtkTreeView 행을 벗어날 때 어떻게 감지 할 수 있습니까?GtkTreeView 행의 마우스 출력 감지

"커서 변경됨"신호는 마우스 입력 (mouseover) 이벤트 인 것처럼 내 보내지 만 마우스를 방금 나가면 트리거되어야합니다. 행 대신. 그러나 "커서가 변경된"신호와 gtk_tree_view_get_cursor()의 호출 내에서 마우스 커서가 이전에 입력 한 행을 알기 위해 "최신 마우스 커서가있는 행"을 얻을 수 있습니다. 그래서 적어도 마우스 커서가 어떤 행을 벗어날 때를 감지하는 방법이 필요합니다.

+0

마우스를 "겹쳐서"표시하면 해당 정보를 추출하는 관련 신호가 표시되지 않습니다. –

+0

@ JoséFonte 무슨 뜻인가요? 내 마우스 애니메이션 (mouseout) 감지가 필요하기 때문에 마우스를 놓는 (mouseout) 감지가 필요합니다. GTK +는이 특정 위젯에서 이러한 신호를 지원하지 않는 것 같지만 잘못된 것일 수 있습니다. 얼마나 유연한 GTK +가 될 수 있는지 아는 사람들은 거의 없습니다. – Malina

+0

이 문제는 GtkTreeView가 GtkTreeViewColumns 및 GtkCellRenderers로 구성된다는 사실에 있습니다. 이 마지막 두 가지는 GtkWidgets가 아니며 목표에 대한 관련 신호를 제공하지 않습니다. GtkWidget leave-notify-event를 사용하면 전체적으로 트리 뷰에서만 작동합니다. 행에 대한 개념조차 없다. 그 정보는 모델에있다. 당신이 할 수있는 일은 고통 스럽습니다. 마우스 x, y 위치를 번역하고이를 셀로 번역하는 것입니다. 또 다른 옵션은 선택 모드에서 호버 옵션을 사용하는 것입니다. 예를 들어 보겠습니다. –

답변

0

마우스 아웃 이벤트는 일반적으로 위젯이 창을 사용하지 않는 환경에서 기본 구현의 창을 소비하는 위젯을 필요로합니다 (Xserver는 하나의 창을 포기할 때 Xserver가이를 보냅니다. 구현에서 충분한 지원을받지 못한 환경에서는 매우 정상적입니다.) 시뮬레이션을해야합니다. 일반적으로 위젯 클래스 계층 구조를 루트까지 검사하여 그러한 이벤트가 에뮬레이트되는 위치를 확인하고이를 처리하는 방법에 대한 아이디어를 얻으십시오. 아마 당신은 콜백을 그러한 이벤트 대신에 호출 할 수 있도록 슈퍼 클래스에 몇 가지 등록 프로세스를 가질 것입니다.