Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AD от Март 03, 2009, 10:11



Название: Как узнать местоположение виджета
Отправлено: AD от Март 03, 2009, 10:11
Есть виджет, который расположен на другом виджете где-то несначала.
Как узнать его местоположение?
geometry().x(), geometry().y(), frameGeometry().x(), frameGeometry().y() - все выдают нули. Но виджет располагается далеко не в начале. Как узнать его положение?


Название: Re: Как узнать местоположение виджета
Отправлено: BaltikS от Март 03, 2009, 11:30
x()?
Относительно координат родителя MapToParent()


Название: Re: Как узнать местоположение виджета
Отправлено: SABROG от Март 03, 2009, 12:57
x()?
Относительно координат родителя MapToParent()

Я правильно понимаю логику этих методов?

Код
C++ (Qt)
QPoint point = childWidget->mapToParent(0,0);
point.x(); // предположим, что x =100, y = 100
point.y(); // это относительные координаты в клиентской области главного окна
 

Код
C++ (Qt)
QPoint point = childWidget->mapFromParent(100,100);
point.x(); // предположим, что x =0, y = 0
point.y(); // это относительные координаты в клиентской области родительского окна
 


Название: Re: Как узнать местоположение виджета
Отправлено: BaltikS от Март 03, 2009, 13:06
Код:
Translates the widget coordinate pos to a coordinate in the parent widget. 
Походу да... Я как то вытаскивал их давненько, код не хочется просто смотреть... Но смысл верен!


Название: Re: Как узнать местоположение виджета
Отправлено: AD от Март 03, 2009, 22:43
Так собственно мне и необходимо узнать этот pos. При изменении размеров он ведь меняется!!!!! Что сделать необходимо?


Название: Re: Как узнать местоположение виджета
Отправлено: pastor от Март 04, 2009, 12:50
 BaltikS уже ответил во втором посте темы. См.:

Цитировать
QPoint QWidget::mapToParent ( const QPoint & pos ) const
Translates the widget coordinate pos to a coordinate in the parent widget.

QPoint QWidget::mapTo ( QWidget * parent, const QPoint & pos ) const
Translates the widget coordinate pos to the coordinate system of parent. The parent must not be 0 and must be a parent of the calling widget.


Название: Re: Как узнать местоположение виджета
Отправлено: AD от Март 04, 2009, 17:03
Ответ неточен. Причина была в том, что pos() и прочее можно применять тогда, когда окно появилось на экране!


Название: Re: Как узнать местоположение виджета
Отправлено: pastor от Март 04, 2009, 17:12
Ответ неточен. Причина была в том, что pos() и прочее можно применять тогда, когда окно появилось на экране!

В твоем первом посте об этом ни слова (что виджеты скрыты), а телепаты сейчас в отпуске ;)