Russian Qt Forum

Qt => Мультимедиа => Тема начата: Novicheck от Апрель 21, 2015, 16:10



Название: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Novicheck от Апрель 21, 2015, 16:10
доброго времени суток!
прошу помощи у имеющих представление... задача состоит в том что на выводимом на главной форме изображении должны быть прикреплены в определенных точках изображения виджеты (скорей всего это будут QLabel), но как их разместить сохранив при этом привязку к определенной точке не могу никак сообразить. все дело в том что когда пользователь растягивает(сжимает) окно приложения, изображение соответственно масштабируется, а виджеты остаются разумеется на старых местах... а должны быть грубо говоря привязаны к точке на картинке и вместе с ней двигаться при масштабировании.
подскажите пожалуйста как или с помощью чего это можно реализовать


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: gil9red от Апрель 21, 2015, 16:15
Воспользуйтесь компоновщиками: QVBoxLayout, QHBoxLayout, QGridLayout и т.п.  :)


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Novicheck от Апрель 21, 2015, 16:20
пробовал... не подходит.
при масштабировании все равно меняется расположение


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Kurles от Апрель 21, 2015, 16:21
Тупо при ресайзе пересчитывать координаты виджетов(рассчитать коэффициенты масштабирования по ширине и высоте относительно оригинальной картинки, и умножить на эти коэффициенты оригинальное положение виджета, после QWidget::move() в рассчитанную позицию).


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Novicheck от Апрель 21, 2015, 16:28
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта,  а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Kurles от Апрель 21, 2015, 16:47
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта,  а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)
коэффициент расчитывается один раз при ресайзе. И при новом ресайзе еще раз расчитывается. В остальное время всё остаётся на своих местах. Проще некуда, и трудоёмкость минимальная.


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Fregloin от Апрель 22, 2015, 09:02
Может проще задействовать графическую сцену? Там все само за вас будет рассчитывать. Да и быстрее рисоваться.


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Novicheck от Апрель 22, 2015, 09:09
хорошая мысль, спасибо))
надо покопать в эту сторону


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Igors от Апрель 22, 2015, 09:35
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта,  а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)
Что трудоемко-то? Так или иначе Вы имеете позицию каждого виджета - иначе его негде отрисовать. Ну и храните эту позицию в релятивных координатах от 0.0 до 1.0 и при ресайзе домножайте на width()/height() базовой картинки - вот и все

хорошая мысль, спасибо))
надо покопать в эту сторону
Что тут хорошего? Потратить тонны ресурсов для решения простейшей задачи. Или я чего-то не понял


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: Fregloin от Апрель 23, 2015, 09:24
Какие тонны ресурсов если на сцене будет с десяток итемов. Хотя если виджеты на сцене часто обновляться будут, то скорее всего действительно производительность просядет в разы.
Тут конкретно от задачи зависит.


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: __Heaven__ от Апрель 23, 2015, 09:44
Быть может вам создать класс-наследник, у которого координаты положения будут в % картинки. Наделить их слотами, которые будут дёргаться при ресайзе, а в них пересчёт из % в реальную позицию.


Название: Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
Отправлено: __Heaven__ от Апрель 23, 2015, 09:45
Ну да, как Игорь сказал.