C++ で C スタイルの GTK 関数を使用していますが、メイン ウィンドウにカーソルを設定する方法がわかりません。
質問する
8360 次
5 に答える
8
使用するgdk_set_cursor()
( https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#gdk-window-set-cursor )
によって作成された GdkCursor でgdk_cursor_new()
( https://developer.gnome.org/gdk3/stable/gdk3-Cursors.html )
于 2012-04-21T17:55:28.770 に答える
5
GdkWndow の取得に関するコメントがこれまでに回答されていないため、これを投稿します。
ほとんどのウィジェットでは、GdkWindow を GtkWidget 構造体のウィンドウ データ フィールドとして取得できます。次のコードは、GtkWindow ウィジェットにカーソルを設定します。
GtkWidget* win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GdkCursor* watchCursor = gdk_cursor_new(GDK_WATCH);
/* set watch cursor */
gdk_window_set_cursor(win->window, watchCursor);
/* return to normal */
gdk_window_set_cursor(win->window, NULL);
子ウィジェットの 1 つから GtkWindow 祖先にアクセスする必要がある場合は、次を使用できます。
GtkWidget* win = gtk_widget_get_ancestor(someWidget, GTK_TYPE_WINDOW);
于 2012-07-06T22:54:39.657 に答える
1
私の解決策:
void gtkSetCursor(GdkCursorType cursorType) {
GdkScreen * screen = gdk_screen_get_default();
GdkWindow * win = gdk_screen_get_root_window(screen);
GdkCursor * cursor = gdk_cursor_new(cursorType); //http://developer.gimp.org/api/2.0/gdk/gdk-Cursors.html
gdk_window_set_cursor(win, cursor);
while (gtk_events_pending()) gtk_main_iteration();
}
...
gtkSetCursor(GDK_WATCH);
start your stuff here
...
end of your stuff
gtkSetCursor(GDK_LEFT_PTR);
于 2016-04-06T18:20:25.180 に答える
0
ジェフの答えはうまくいきませんでした(Gtk3)。だからここに私の解決策があります:
GdkWindow* win = gtk_widget_get_parent_window(widget);
GdkCursor* watchCursor = gdk_cursor_new(GDK_WATCH);
gdk_window_set_cursor(win, watchCursor);
于 2014-05-24T13:31:28.537 に答える