Как найти абсолютную позицию виджета GTK в окне? - PullRequest
9 голосов
/ 18 января 2010

Я могу использовать GTK-функцию «выделения», но она дает только позицию относительно своего родителя.Как найти абсолютную позицию виджета GTK внутри окна?

То есть, если виджет отображается на 500 пикселей вниз, а на 300 пикселей вниз, но вложен в различные hbox и таблицы, как мы можем найтион находится в позиции 500x300 пикселей?

Мне нужно, чтобы окно отображалось в точном месте под другим виджетом.

спасибо

Ответы [ 2 ]

16 голосов
/ 19 января 2010

Используйте функцию gtk_widget_translate_coordinates() для отображения координат вашего дочернего виджета на координаты верхнего уровня, содержащего виджет.Это может выглядеть примерно так:

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

Обратите внимание, что во многих случаях форсирование положения нового окна является ошибкой, если только оно не действует как всплывающее меню.

5 голосов
/ 10 ноября 2010

Другой подход:

gint wx, wy;
gdk_window_get_origin (gtk_widget_get_window (somewidget), &wx, &wy);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...