2014-10-12 2 views
3

У меня есть SVG изображения с этим атрибуты: viewBox="0 0 100 100"Можно ли отображать SVG в Qt (5.3) TextEdit без потери качества?

Это базовый код, который я использую для отображения SVG:

Image{ 
    width: 50 
    height: 50 
    source: "test.svg" 
} 

и это не хорошо, потому что изображение растрируется перед изменением размеров по ширине и значения высоты (50 , 50).

Этого код отлично работает на все разрешение:

Image{ 
    width: 50 
    height: 50 
    sourceSize.width: width 
    sourceSize.height: height 
    source: "test.svg" 
} 

, потому что изображение рисуется в точных размерах, необходимо!

Возможно ли получить такую ​​же функциональность в TextEdit, где используется тег <img>?

<img src="test.svg" width="50" height="50"> 

Этот код не работает, потому что sourceSize не может быть установлена ​​... и изображение растрируется перед изменением размеров и отображения ...

Может быть, есть какой-то другой способ для достижения этой цели?

ответ

1

Единственное решение - предоставить размер изображения как часть URL-адреса изображения и переопределить QTextDocument::loadResource или QTextEdit::loadResource в производном классе. Ваш элемент изображения будет выглядеть:

<img src="test.svg?50x50" width="50" height="50" /> 

Вы можете разобрать URL в вашей реализации loadResource.

+0

Спасибо за ответ, но я не верю, что это возможно в QML, и переопределить TextEdit в C i слишком много для меня ... Основная цель - отобразить текст и некоторые встроенные изображения (например, смайлики в приложении чата). Я использую TextEdit, потому что в этом случае он может отображать RichText (html), а html normaly работает в браузере IE или FF - svg выглядит идеально. Почему он не работает в Qt? Есть ли другой способ смешивания текста и изображений? – DuhRobot

+0

@DuhRobot Это не работает, потому что это устаревший код виджетов, который никто не беспокоил. Вы более чем можете подать необходимые изменения на gerrit и внести необходимые изменения в Qt. «Реимпликация» имеет только один метод, а не весь класс :) –

+0

Спасибо @ Куба Обер. Мне нужно изменить размеры моих пользовательских изображений SVG в зависимости от экрана. Возможно, это будет возможно достичь с помощью нового веб-движка в Qt 5.4. На данный момент кажется, что это невозможно ... простой способ в QML. – DuhRobot