2017-09-19 8 views
0

マウスカーソルがGtkListStoreモデルに関連付けられたGtkTreeView行を離れるときを検出するにはどうすればよいですか?GtkTreeView行のマウス出力の検出

「カーソルが変更されました」という信号は、私が探しているものではないことに注意してください。マウスがマウスオーバー(mouseover)イベントであるかのように放射され、マウスを放置した代わりに行。しかし、 "カーソル変更"信号とgtk_tree_view_get_cursor()のコールでは、マウスカーソルが以前に入力した行を知るために "最新のマウス適用行"を得ることができます。だから私は少なくとも、マウスカーソルが何行か残ったときを検出する方法が必要です。

+0

マウスを「上回る」だけでは、その情報を抽出するための関連するシグナルは得られません。 –

+0

@JoséFonteあなたはどういう意味ですか?それは私のアニメーションを開始する必要があるので、私はマウスのleave(mouseout)の検出が必要です。 GTK +はこの特定のウィジェットでこのようなシグナルをサポートしていないようですが、私は間違っているかもしれません。 GTK +の柔軟性を知っている人はほとんどいません。 – Malina

+0

この問題は、GtkTreeViewがGtkTreeViewColumnsとGtkCellRenderersで構成されているという事実にあります。これらの最後の2つはGtkWidgetsではなく、あなたの目標に関連するシグナルを提供しません。 GtkWidgetのleave-notify-eventの使用は、全体としてツリービュー上でのみ動作します。行の概念さえもなく、その情報はモデル上にあります。あなたができることは、マウスのx、yの位置を翻訳し、それをセルに変換することです。別のオプションは、選択モードでホバーオプションを使用することです。私は例を調べてみましょう。 –

答えて

0

マウスアウトイベントでは、通常、ウィジェットがウィンドウを使用しない環境では、基本的な実装のウィンドウを消費するウィジェットが必要です(通常、1つのウィンドウを放棄したときにXserverが送信します。実装から十分なサポートを得ていない環境では非常に正常です)、それらをシミュレートする必要があります。通常は、ウィジェットのクラス階層をルートまでチェックして、そのようなイベントがエミュレートされている場所とその対処方法を知る方法を確認する必要があります。おそらく、そのようなイベントに代わってコールバックを呼び出すことができるように、スーパークラスにいくつかの登録プロセスがあるでしょう。

関連する問題