Название: прикрепить виджеты к заданным участкам изображения (с масштабированием) Отправлено: 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 Ну да, как Игорь сказал.
|