Russian Qt Forum
Ноябрь 24, 2024, 03:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [4.3.3] Что посоветуете с svg  (Прочитано 4488 раз)
Icoz
Гость
« : Март 31, 2008, 23:16 »

Есть svg-файл, в котором я знаю названия некоторых id элементов.
Надо нарисовать этот svg и обработать клики на конкретные объекты.
Начал пробовать через QGraphicScene+QGraphicSvgItem, но тогда мне надо самому пихать итем в нужную позицию на сцене, которую я не знаю. А можно ли как-то попроще? Чтобы отрисовка с файла шла сама, а я QGraphicSvgItem цеплял только к определенным объектам?
Или может я что у QSvgWidget прозевал и там можно клики отследить?

Короче, совет нужен...

ЗЫ. Хотя бы как для элемента узнать на какой позиции он должен был бы быть?
« Последнее редактирование: Март 31, 2008, 23:25 от Icoz » Записан
vaprele07
Гость
« Ответ #1 : Апрель 01, 2008, 02:53 »

QSvgRenderer::boundsOnElement
Записан
Icoz
Гость
« Ответ #2 : Апрель 01, 2008, 22:49 »

Ок. Теперь юзаю QSvgWidget c доступом через renderer() к QSvgRenderer.
Другая проблема появилась. Не могу заставить свг-виджет сохранять пропорции изображения. Уже и gridlayout  с двумя спейсерами сделал (гор. и верт.) - все равно. Игрался с svgWidget->setSizePolicy - по фигу, не сохраняет пропорции - рисует как хочет (сжато/растянуто).
setMinimumSize  я ему сделал - хотя бы в никуда не девается теперь при цеплянии док-виджета.
setMaximumSize делать не хочу, чтобы мог увеличиваться. Но мне нужно сохранять пропорции виджета!
КАК? Только наследованием с перехватом всяких ресайзов и прочего?
Записан
ритт
Гость
« Ответ #3 : Апрель 02, 2008, 03:27 »

ммм...интересно. ещё не приходилось сталкиваться
возможно, QSizePolicy::setHeightForWidth поможет
Записан
Icoz
Гость
« Ответ #4 : Апрель 02, 2008, 18:58 »

ммм...интересно. ещё не приходилось сталкиваться
возможно, QSizePolicy::setHeightForWidth поможет
Круто! Вот код из конструктора:
Код:
    svg = new QSvgWidget(file, this);
    QSizePolicy sp(QSizePolicy::Maximum,QSizePolicy::Maximum);
    sp.setHeightForWidth(true);
    svg->setSizePolicy(sp);
    svg->resize(svg->sizeHint());
Если в третьей строке true, то картинки нет ВООБЩЕ! Иначе - есть. Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.