crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Позиция виджета относительно родительского, если первый на компоновщике
MishaUA
  опции профиля:
сообщение 5.3.2015, 15:33
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


Здравствуйте!
Есть виджет1, на нем установлен ещё один виджет (виджет2), на этом виджете компоновщик, в компоновщике ещё один виджет (виджет3).
Мне нужно получить положение виджета3 относительно виджета2 или виджета1. Пытался вот так (метоыд вызваются с класса виджета3):
виджет3->pos();
виджет3->mapTo(this->parentWidget(), виджет3->pos());
виджет3->mapToParent(виджет3->pos());

Все 3 функции возвращают QPoint(0, 0).
Визуально видно, что виджет3 относительно виджета2 находится не в позиции 0,0 и виджет2 относительно виджета1 тоже не в самом начале, но его положение и могу получать через pos().

Сообщение отредактировал MishaUA - 5.3.2015, 15:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 5.3.2015, 16:07
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


положение w3 относительно w2 = w3->pos()
положение w3 относительно w1 = w2->mapTo(w1, w3->pos());

Если это не работает, то:
а) неправильно могут быть заданы родительские виджеты при компоновке.
б) можно решить в этом случае через глобальную координатную систему w2->mapFromGlobal(w3->mapToGlobal(QPoint())); или w1->mapFromGlobal(w3->mapToGlobal(QPoint()));

Сообщение отредактировал wiz29 - 5.3.2015, 16:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 5.3.2015, 18:31
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 185
Регистрация: 28.4.2013
Пользователь №: 3810

Спасибо сказали: 13 раз(а)




Репутация:   0  


Проблема, предположительно, оказалась в компоновщике.
виджет3->pos() возвращает 0,0, так как в данном случае, компоновщик, установленный на виджет2 расстягивает виджет3 на всю ширину виджет2, поэтому положение и размер виджета3 всегда равен положению и размеру виджета2 (при margin==0).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2022, 23:04