使用 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)
用于gdk_window_set_cursor()由gdk_cursor_new_from_name().
要获得 GtkWindow 的 GdkWindow,您可以使用,gtk_widget_get_window()因为 GtkWindow 是 GtkWidget 的子类。
注意:此答案是对idefixs 答案(重要更正 + 链接更新 + 小修改以使答案完整 + 改进格式)的改进,该答案被拒绝为编辑。
发布此消息是因为到目前为止,有关获得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);
Run Code Online (Sandbox Code Playgroud)
如果您需要从其子窗口小部件之一进入GtkWindow祖先,则可以使用:
GtkWidget* win = gtk_widget_get_ancestor(someWidget, GTK_TYPE_WINDOW);
Run Code Online (Sandbox Code Playgroud)