Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Получить физические координаты компонента виджета

Автор: Andrewshkovskii 13.10.2009, 13:39

Что нужно : получить координаты ползунка у слайдера.
Зачем : для того, что бы реализовать вот это

т.е рисовать линию на QGraphicView прямо под ползунком.
Необходимо учесть, что максимальное значение слайдера может меняться во время выполнения программы.

Автор: kwisp 13.10.2009, 13:46

Andrewshkovskii,
а вычислять координату в соответсвии с QSlider::pos() & QSlider::sliderPosition() не пробовал?

Автор: Andrewshkovskii 13.10.2009, 13:59

Не смотрел ещё.
pos() возвратит позицию виджета относительно родительского? у меня просто сладер лежит в лейауте3, который лежит в лейауте2, а лейаут2, лежит в лейауте1...Я так понимаю он вернет позицию левого верхнего угла слайдера?
А вот sliderPosition не понятно, возвращает int, это число относительного чего, и чем является?.. :huh:

Автор: kwisp 13.10.2009, 15:07

можно узнать глобальные координаты слайдера
а sliderPosition() это позиция ползунка в int ты сам задаешь градацию.
обычно от 0 до 100.

Автор: Andrewshkovskii 13.10.2009, 15:34

Глобальные я понял как найти..а вот QSlider::SliderPosition возвращает int QSlider::value() .. а нужно как-то узнать, как найти координату ползунка, что бы под ним на нарисовать линию, до нижней координаты QGraphicView..

Автор: kwisp 13.10.2009, 15:45

ну раздели длину в всего слайдера на максимальное значение value() получишь примерное прирощение координаты ползунка на единицу value()

Автор: Litkevich Yuriy 13.10.2009, 15:48

Цитата(Andrewshkovskii @ 13.10.2009, 17:59) *
А вот sliderPosition не понятно, возвращает int, это число относительного чего, и чем является?
Цитата
If tracking is enabled (the default), this is identical to value.


Andrewshkovskii, я думаю тут без наследования не обойтись. Стоит поменять стиль и все размеры изменятся.

Лучше унаследоватся и получить доступ к внутренностям.

Автор: Andrewshkovskii 13.10.2009, 15:50

Ну стиль меняться не будет, это лаба, а не продакшн код:) Просто потраченное время не будет стоить результата...
Конечно, если смотреть со стороны получаемого опыта.. В общем попробую так, как посоветовал kwisp

Автор: Andrewshkovskii 13.10.2009, 16:23

Цитата(kwisp @ 13.10.2009, 16:45) *
ну раздели длину в всего слайдера на максимальное значение value() получишь примерное прирощение координаты ползунка на единицу value()

Подумал я..именно так не получиться, если длина слайдера , допустим будет 254, а макс. значение 7400.. то результат будет меньше 1..я понимаю, что это примерное значение получается..но не настолько же))

Автор: kwisp 13.10.2009, 16:39

если честно не пойму.
ты все равно такие мелкие передвижения не увидишь на одно деление из 7400.
просто у тебя шаг будет double и всё.
берешь value() и узнаешь сколько там пикселей уместилось.


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)