2010-01-18 28 views
7

Tôi có thể sử dụng chức năng "phân bổ" GTK, nhưng điều đó chỉ cung cấp cho vị trí liên quan đến cha mẹ của nó. Làm cách nào để tìm vị trí tuyệt đối của tiện ích GTK bên trong cửa sổ?Làm cách nào để bạn tìm thấy vị trí tuyệt đối của tiện ích GTK trong cửa sổ?

Tức là, nếu tiện ích con xuất hiện 500 pixel và giảm 300 pixel, nhưng được lồng trong các hòm và bảng khác nhau, làm cách nào để tìm ra nó ở vị trí 500x300 pixel?

Tôi cần làm cho cửa sổ xuất hiện ở vị trí chính xác trong một tiện ích con khác.

nhờ

Trả lời

12

Sử dụng gtk_widget_translate_coordinates() chức năng để lập bản đồ từ các tọa độ của widget con quý vị tọa độ của mục cấp đầu có chứa các widget. Nó có thể trông giống như

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

Lưu ý rằng trong nhiều trường hợp buộc vị trí của cửa sổ mới là một sự không hài lòng trừ khi nó hoạt động như một menu bật lên.

+0

Cảm ơn bạn đã trả lời rất nhanh. Nó hoạt động !! :) – user129975

4

Một cách tiếp cận:

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

Điều này tuyệt đối đối với màn hình và không liên quan đến cửa sổ GTK! – schlamar

Các vấn đề liên quan