如何在 GTK C 中隐藏鼠标指针

How to hide mouse pointer in GTK C

我有一个使用 gtk 和 c 制作的应用程序。它以全屏模式运行并在标签上显示数据。我需要在应用程序启动时隐藏鼠标指针,然后在应用程序停止时取消隐藏。

怎么做。

这是我的主window:

GtkWidget *window = NULL;

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);  
gtk_widget_set_size_request((window),640,480);  
gtk_widget_realize (window);
gtk_window_fullscreen((GtkWindow*)window);      

呸,那是一个弃用的兔子洞!

从快速浏览文档来看,目前最好的选择似乎是 gdk_seat_grab() 函数。它有一堆参数,其中一个是 GdkCursor *。光标在抓取处于活动状态时设置。

您应该可以将 gdk_cursor_new_for_display()GDK_BLANK_CURSOR 结合使用来获得空白光标。

您可以使用gdk_display_get_default() 函数获得默认显示。这通常就足够了,除非您需要考虑多显示器支持;无论如何,这应该可以让您开始使用 API。

其实你不需要gdk_seat_grab();你真正想要的是 gdk_window_set_cursor()。对于使用不可见游标,您可以使用 gdk_cursor_new_from_name() 加载 "none" 游标,这通常由 GDK 后端实现显式处理为 return 空白游标。 The Cursors example in gtk3-demo gives you an example of how to use it.

请注意,这意味着如果 GTK+ 出于任何原因无法实现您的 window,您将不得不重置光标。所以你可能想连接到两个实现信号来做分配。

我是这样做的:

GdkCursor* Cursor = gdk_cursor_new(GDK_BLANK_CURSOR);
GdkWindow* win = gtk_widget_get_window((window));
gdk_window_set_cursor((win),Cursor);