Russian Qt Forum

Qt => Общие вопросы => Тема начата: CoderInside от Февраль 24, 2006, 12:39



Название: Координаты виджета относительно экрана
Отправлено: CoderInside от Февраль 24, 2006, 12:39
Добрый день!
Мне нужно чтобы по нажатию на кнопку над ней появлялся диалог. Т.е. в не зависимости от размера окна, положения и прочего он появлялся именно над ней (в смысле вверху).
Вопрос: Как узнать экранные координаты кнопки, чтобы потом можно было на это место передвинуть диалог?

QDialog * dialogSmile = new QDialog(this);
dialogSmile->move(buttonAddSmile->x(),buttonAddSmile->y());
dialogSmile->exec();

Этот код не работает как надо, потому что x() и y() возвращают координаты относительно родительского виджета...

" This property holds the x coordinate of the widget relative to its parent including any window frame."

Как быть?

P.S. Qt 4.1.1


Название: Координаты виджета относительно экрана
Отправлено: yshurik от Февраль 24, 2006, 13:32
Пользуй QWidget::mapToGlobaд( pos )

w = new QWidget(parent);
...

QPoint pos = w->mapToGlobal( QPoint(0,0) );

потом если нужно pos можно перегнать в локальные относительно другого виджета с mapToLocal()


Название: Координаты виджета относительно экрана
Отправлено: CoderInside от Февраль 24, 2006, 14:08
Цитата: "yshurik"
Пользуй QWidget::mapToGlobaд( pos )

w = new QWidget(parent);
...

QPoint pos = w->mapToGlobal( QPoint(0,0) );

потом если нужно pos можно перегнать в локальные относительно другого виджета с mapToLocal()



Помогло! ;) Спасибо!