E
April 12, 2016, 7:04 p.m.

Qt урок 44. Сохранение QGraphicsScene в SVG

qgraphicspathitem, qgraphicsscene, qgrpaphicsrectitem, qt урок 40, svg

Евгений, просмотрела урок 44 о сохранении объектов … в файл SVG.
Скачала исходники и результата ожидаемого не получила.
В запомненном файле нет ни одной строки с rect. Вместо этого ” d=”M10,50 L110,50 L110,100 L10,100 L10,50″/>

Наткнулась на ваш урок и попыталась получить результат.
QT недавно стала использовать.
На самом деле меня интересовал больше урок 41 – это почти то, что мне нужно сделать в своей программе.

Дело в версии? настройках? Где смотреть?

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="141.111mm" height="141.111mm"
 viewBox="0 0 400 400"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
<title>SVG Example</title>
<desc>File created by SVG Example</desc>
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="#ff0000" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="2" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<path vector-effect="none" fill-rule="evenodd" d="M10,50 L110,50 L110,100 L10,100 L10,50"/>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="#0000ff" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="2" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<path vector-effect="none" fill-rule="evenodd" d="M150,100 L265,100 L265,175 L150,175 L150,100"/>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
</g>
</svg>

 

0
The question is asked by the articleQt/C++ - Lesson 044. Saving objects from QGraphicsScene into SVG

Do you like it? Share on social networks!

8
Evgenii Legotckoi
  • April 12, 2016, 7:24 p.m.

Скорее всего дело в том, что вы использовали QGraphicsPathItem.
У меня при использовании QGraphicsPathItem был такой же результат.
Тег rect означает именно прямоугольник, path – это путь, ломанная линия.
Судя по этим координатам M10,50 L110,50 L110,100 L10,100 L10,50, Вы нарисовали прямоугольник,но он был нарисован с помощью объекта “путь”, а не объекта “прямоугольник”.

Воспользуйтесь объектом класса QGraphicsRectItem.

    E
    • April 13, 2016, 8:21 p.m.

    Хмм…
    Я ни буквы в ваших исходниках не исправила, не считая, что раскомментировала создание красного и синего прямоугольника.

    Мб дело в чём-то другом?

      Evgenii Legotckoi
      • April 13, 2016, 8:22 p.m.
      Я перепроверю вечером, после окончания рабочего дня. Возможно дело в версии Qt.
      Урок делался на Qt5.5.
      Какая у Вас версия?
        E
        • April 13, 2016, 8:23 p.m.
        1616QT5.2.1 (QT Creator 3.0.1)
          Evgenii Legotckoi
          • April 13, 2016, 8:24 p.m.

          Обновитесь до версии Qt5.5 или лучше до Qt5.6 (QtCreator 3.6.1)

            Evgenii Legotckoi
            • April 13, 2016, 9:08 p.m.
            На Qt5.6 (QtCreator 3.6.1) формирует прямоугольники с помощью тега rect в SVG файле.
            Обновитесь лучше до последней версии.
              E
              • April 14, 2016, 11:56 a.m.
              • The answer was marked as a solution.
              Да, в моей версии QT есть ошибка : https://bugreports.qt.io/browse/QTBUG-1359,
              исправлен в версии 5.5.0
                Evgenii Legotckoi
                • April 14, 2016, 6:12 p.m.
                Интересно, значит мне повезло миновать этот баг.

                  Comments

                  Only authorized users can post comments.
                  Please, Log in or Sign up
                  • Last comments
                  • AK
                    April 1, 2025, 11:41 a.m.
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    March 9, 2025, 9:02 p.m.
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    March 9, 2025, 4:14 p.m.
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                  • ИМ
                    Nov. 22, 2024, 9:51 p.m.
                    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                  • Evgenii Legotckoi
                    Oct. 31, 2024, 11:37 p.m.
                    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup