Russian Qt Forum
Ноябрь 22, 2024, 12:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Мультимедиа
>
прикрепить виджеты к заданным участкам изображения (с масштабированием)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: прикрепить виджеты к заданным участкам изображения (с масштабированием) (Прочитано 7722 раз)
Novicheck
Гость
прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
:
Апрель 21, 2015, 16:10 »
доброго времени суток!
прошу помощи у имеющих представление... задача состоит в том что на выводимом на главной форме изображении должны быть прикреплены в определенных точках изображения виджеты (скорей всего это будут QLabel), но как их разместить сохранив при этом привязку к определенной точке не могу никак сообразить. все дело в том что когда пользователь растягивает(сжимает) окно приложения, изображение соответственно масштабируется, а виджеты остаются разумеется на старых местах... а должны быть грубо говоря привязаны к точке на картинке и вместе с ней двигаться при масштабировании.
подскажите пожалуйста как или с помощью чего это можно реализовать
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #1 :
Апрель 21, 2015, 16:15 »
Воспользуйтесь компоновщиками: QVBoxLayout, QHBoxLayout, QGridLayout и т.п.
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Novicheck
Гость
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #2 :
Апрель 21, 2015, 16:20 »
пробовал... не подходит.
при масштабировании все равно меняется расположение
Записан
Kurles
Бывалый
Offline
Сообщений: 480
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #3 :
Апрель 21, 2015, 16:21 »
Тупо при ресайзе пересчитывать координаты виджетов(рассчитать коэффициенты масштабирования по ширине и высоте относительно оригинальной картинки, и умножить на эти коэффициенты оригинальное положение виджета, после QWidget::move() в рассчитанную позицию).
Записан
Код
C++ (Qt)
while
(
!
asleep
(
)
)
sheep
++;
Novicheck
Гость
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #4 :
Апрель 21, 2015, 16:28 »
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта, а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)
Записан
Kurles
Бывалый
Offline
Сообщений: 480
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #5 :
Апрель 21, 2015, 16:47 »
Цитата: Novicheck от Апрель 21, 2015, 16:28
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта, а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)
коэффициент расчитывается один раз при ресайзе. И при новом ресайзе еще раз расчитывается. В остальное время всё остаётся на своих местах. Проще некуда, и трудоёмкость минимальная.
Записан
Код
C++ (Qt)
while
(
!
asleep
(
)
)
sheep
++;
Fregloin
Супер
Offline
Сообщений: 1025
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #6 :
Апрель 22, 2015, 09:02 »
Может проще задействовать графическую сцену? Там все само за вас будет рассчитывать. Да и быстрее рисоваться.
Записан
Novicheck
Гость
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #7 :
Апрель 22, 2015, 09:09 »
хорошая мысль, спасибо))
надо покопать в эту сторону
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #8 :
Апрель 22, 2015, 09:35 »
Цитата: Novicheck от Апрель 21, 2015, 16:28
именно эта мысль у меня и появилась первой, но дело в том что виджетов на изображении будет много (изображение - геогр.карта, а виджеты - города), и соответственно расчет под каждого коэффициента очень трудоемко, надеюсь с Вашей коллективной помощью найти метод более продуктивный...)
Что трудоемко-то? Так или иначе Вы имеете позицию каждого виджета - иначе его негде отрисовать. Ну и храните эту позицию в релятивных координатах от 0.0 до 1.0 и при ресайзе домножайте на width()/height() базовой картинки - вот и все
Цитата: Novicheck от Апрель 22, 2015, 09:09
хорошая мысль, спасибо))
надо покопать в эту сторону
Что тут хорошего? Потратить тонны ресурсов для решения простейшей задачи. Или я чего-то не понял
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #9 :
Апрель 23, 2015, 09:24 »
Какие тонны ресурсов если на сцене будет с десяток итемов. Хотя если виджеты на сцене часто обновляться будут, то скорее всего действительно производительность просядет в разы.
Тут конкретно от задачи зависит.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #10 :
Апрель 23, 2015, 09:44 »
Быть может вам создать класс-наследник, у которого координаты положения будут в % картинки. Наделить их слотами, которые будут дёргаться при ресайзе, а в них пересчёт из % в реальную позицию.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: прикрепить виджеты к заданным участкам изображения (с масштабированием)
«
Ответ #11 :
Апрель 23, 2015, 09:45 »
Ну да, как Игорь сказал.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...