Позиция виджета относительно родительского, если первый на компоновщике |
Здравствуйте, гость ( Вход | Регистрация )
Позиция виджета относительно родительского, если первый на компоновщике |
MishaUA |
5.3.2015, 15:33
Сообщение
#1
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Здравствуйте!
Есть виджет1, на нем установлен ещё один виджет (виджет2), на этом виджете компоновщик, в компоновщике ещё один виджет (виджет3). Мне нужно получить положение виджета3 относительно виджета2 или виджета1. Пытался вот так (метоыд вызваются с класса виджета3):
Все 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). |
|
|
Текстовая версия | Сейчас: 29.3.2024, 12:23 |