如何在GTK for C中将光标更改为手表?

Erw*_* J. 4 c gtk mouse-cursor

我在C++中使用C风格的GTK函数,我无法弄清楚如何设置主窗口的光标.

sil*_*gan 6

用于gdk_window_set_cursor()gdk_cursor_new_from_name().

要获得 GtkWindow 的 GdkWindow,您可以使用,gtk_widget_get_window()因为 GtkWindow 是 GtkWidget 的子类。

注意:此答案是对idefixs 答案(重要更正 + 链接更新 + 小修改以使答案完整 + 改进格式)的改进,该答案被拒绝为编辑。


jef*_*ill 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);
Run Code Online (Sandbox Code Playgroud)

如果您需要从其子窗口小部件之一进入GtkWindow祖先,则可以使用:

GtkWidget* win = gtk_widget_get_ancestor(someWidget, GTK_TYPE_WINDOW);
Run Code Online (Sandbox Code Playgroud)