2010-01-18 23 views
7

我可以使用GTK「分配」功能,但只給出相對於其父項的位置。如何找到窗口內的GTK小部件的絕對位置?也就是說,如果小部件出現500像素和300像素向下,但嵌套在各種hbox和表格中,我們如何發現它在500x300像素位置?如何在窗口中找到GTK小部件的絕對位置?

我需要使窗口出現在另一個小部件下的確切位置。

感謝

回答

12

使用gtk_widget_translate_coordinates()功能,從你的孩子小部件的含有插件的頂層的座標的座標映射。它可能看起來像

GtkWidget *somewidget; 
gint wx, wy; 
gtk_widget_translate_coordinates(somewidget, gtk_widget_get_toplevel(somewidget), 0, 0, &wx, &wy); 

注意,在許多情況下,強制在新窗口的位置是不好的特性,除非它是作爲一個彈出菜單。

+0

謝謝你的非常快的答案。有用!! :) – user129975 2010-01-18 21:29:03

4

另一種方法:

gint wx, wy; 
gdk_window_get_origin (gtk_widget_get_window (somewidget), &wx, &wy); 
+0

這是絕對的屏幕,沒有相對於GTK窗口! – schlamar 2012-10-12 06:56:34

相關問題