我可以使用GTK“分配”功能,但只给出相对于其父项的位置。如何找到窗口内的GTK小部件的绝对位置?也就是说,如果小部件出现500像素和300像素向下,但嵌套在各种hbox和表格中,我们如何发现它在500x300像素位置?如何在窗口中找到GTK小部件的绝对位置?
我需要使窗口出现在另一个小部件下的确切位置。
感谢
我可以使用GTK“分配”功能,但只给出相对于其父项的位置。如何找到窗口内的GTK小部件的绝对位置?也就是说,如果小部件出现500像素和300像素向下,但嵌套在各种hbox和表格中,我们如何发现它在500x300像素位置?如何在窗口中找到GTK小部件的绝对位置?
我需要使窗口出现在另一个小部件下的确切位置。
感谢
使用gtk_widget_translate_coordinates()
功能,从你的孩子小部件的含有插件的顶层的坐标的坐标映射。它可能看起来像
GtkWidget *somewidget;
gint wx, wy;
gtk_widget_translate_coordinates(somewidget, gtk_widget_get_toplevel(somewidget), 0, 0, &wx, &wy);
注意,在许多情况下,强制在新窗口的位置是不好的特性,除非它是作为一个弹出菜单。
另一种方法:
gint wx, wy;
gdk_window_get_origin (gtk_widget_get_window (somewidget), &wx, &wy);
这是绝对的屏幕,没有相对于GTK窗口! – schlamar 2012-10-12 06:56:34
谢谢你的非常快的答案。有用!! :) – user129975 2010-01-18 21:29:03