Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Svg files does not appear on the screen
QtWS25 Last Chance

Svg files does not appear on the screen

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt5svgqgraphics
4 Posts 3 Posters 662 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    deleted286
    wrote on last edited by
    #1

    When i run my code, my svg's does not appear on the screen. What can be the reason?
    There is no error code, i debug it but i cannot find any error also

    #ifndef QFI_ADI_CPP
    #define QFI_ADI_CPP
    #endif
    #ifdef WIN32
    #   include <float.h>
    #endif
    #include <math.h>
    #include "qfi_ADI.h"
    
    qfi_ADI::qfi_ADI(QWidget *parent):
        QGraphicsView(parent),
        m_scene ( nullptr ),
    
        m_itemBack ( nullptr ),
        m_itemFace ( nullptr ),
        m_itemRing ( nullptr ),
        m_itemCase ( nullptr ),
    
        m_roll  ( 0.0f ),
        m_pitch ( 0.0f ),
    
        m_faceDeltaX_new ( 0.0f ),
        m_faceDeltaX_old ( 0.0f ),
        m_faceDeltaY_new ( 0.0f ),
        m_faceDeltaY_old ( 0.0f ),
    
        m_scaleX ( 1.0f ),
        m_scaleY ( 1.0f ),
    
        m_originalHeight ( 240 ),
        m_originalWidth  ( 240 ),
    
        m_originalPixPerDeg ( 1.7f ),
    
        m_originalAdiCtr ( 120.0f, 120.0f ),
    
        m_backZ ( -30 ),
        m_faceZ ( -20 ),
        m_ringZ ( -10 ),
        m_caseZ (  10 )
    {
        reset();
        m_scene = new QGraphicsScene( this );
        setScene( m_scene );
    
        m_scene->clear();
    
        init();
    }
    
    qfi_ADI::~qfi_ADI()
    {
        if ( m_scene != nullptr )
        {
            m_scene->clear();
            delete m_scene;
            m_scene = nullptr;
        }
    
        reset();
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::reinit()
    {
        if ( m_scene )
        {
            m_scene->clear();
    
            init();
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::update()
    {
        updateView();
    
        m_faceDeltaX_old  = m_faceDeltaX_new;
        m_faceDeltaY_old  = m_faceDeltaY_new;
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::setRoll( float roll )
    {
        m_roll = roll;
    
        if ( m_roll < -180.0f ) m_roll = -180.0f;
        if ( m_roll >  180.0f ) m_roll =  180.0f;
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::setPitch( float pitch )
    {
        m_pitch = pitch;
    
        if ( m_pitch < -25.0f ) m_pitch = -25.0f;
        if ( m_pitch >  25.0f ) m_pitch =  25.0f;
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::resizeEvent( QResizeEvent *event )
    {
        ////////////////////////////////////
        QGraphicsView::resizeEvent( event );
        ////////////////////////////////////
    
        reinit();
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::init()
    {
        m_scaleX = (float)width()  / (float)m_originalWidth;
        m_scaleY = (float)height() / (float)m_originalHeight;
    
        reset();
    
        m_itemBack = new QGraphicsSvgItem( ":/qfi/images/adi_back.svg");
        m_itemBack->setCacheMode( QGraphicsItem::NoCache );
        m_itemBack->setZValue( m_backZ );
        m_itemBack->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
        m_itemBack->setTransformOriginPoint( m_originalAdiCtr );
        m_scene->addItem( m_itemBack );
    
        m_itemFace = new QGraphicsSvgItem( ":/qfi/images/adi_face.svg");
        m_itemFace->setCacheMode( QGraphicsItem::NoCache );
        m_itemFace->setZValue( m_faceZ );
        m_itemFace->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
        m_itemFace->setTransformOriginPoint( m_originalAdiCtr );
        m_scene->addItem( m_itemFace );
    
        m_itemRing = new QGraphicsSvgItem( ":/qfi/images/adi_ring.svg");
        m_itemRing->setCacheMode( QGraphicsItem::NoCache );
        m_itemRing->setZValue( m_ringZ );
        m_itemRing->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
        m_itemRing->setTransformOriginPoint( m_originalAdiCtr );
        m_scene->addItem( m_itemRing );
    
        m_itemCase = new QGraphicsSvgItem( ":/qfi/images/adi_case.svg");
        m_itemCase->setCacheMode( QGraphicsItem::NoCache );
        m_itemCase->setZValue( m_caseZ );
        m_itemCase->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
        m_scene->addItem( m_itemCase );
    
        centerOn( width() / 2.0f, height() / 2.0f );
    
        updateView();
    }
    
    
    
    void qfi_ADI::reset()
    {
        m_itemBack = nullptr;
        m_itemFace = nullptr;
        m_itemRing = nullptr;
        m_itemCase = nullptr;
    
        m_roll  = 0.0f;
        m_pitch = 0.0f;
    
        m_faceDeltaX_new = 0.0f;
        m_faceDeltaX_old = 0.0f;
        m_faceDeltaY_new = 0.0f;
        m_faceDeltaY_old = 0.0f;
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    void qfi_ADI::updateView()
    {
        m_scaleX = (float)width()  / (float)m_originalWidth;
        m_scaleY = (float)height() / (float)m_originalHeight;
    
        m_itemBack->setRotation( - m_roll );
        m_itemFace->setRotation( - m_roll );
        m_itemRing->setRotation( - m_roll );
    
        float roll_rad = M_PI * m_roll / 180.0;
    
        float delta  = m_originalPixPerDeg * m_pitch;
    
        m_faceDeltaX_new = m_scaleX * delta * sin( roll_rad );
        m_faceDeltaY_new = m_scaleY * delta * cos( roll_rad );
    
        m_itemFace->moveBy( m_faceDeltaX_new - m_faceDeltaX_old, m_faceDeltaY_new - m_faceDeltaY_old );
    
        m_scene->update();
    }
    
    J.HilkJ JKSHJ 2 Replies Last reply
    0
    • D deleted286

      When i run my code, my svg's does not appear on the screen. What can be the reason?
      There is no error code, i debug it but i cannot find any error also

      #ifndef QFI_ADI_CPP
      #define QFI_ADI_CPP
      #endif
      #ifdef WIN32
      #   include <float.h>
      #endif
      #include <math.h>
      #include "qfi_ADI.h"
      
      qfi_ADI::qfi_ADI(QWidget *parent):
          QGraphicsView(parent),
          m_scene ( nullptr ),
      
          m_itemBack ( nullptr ),
          m_itemFace ( nullptr ),
          m_itemRing ( nullptr ),
          m_itemCase ( nullptr ),
      
          m_roll  ( 0.0f ),
          m_pitch ( 0.0f ),
      
          m_faceDeltaX_new ( 0.0f ),
          m_faceDeltaX_old ( 0.0f ),
          m_faceDeltaY_new ( 0.0f ),
          m_faceDeltaY_old ( 0.0f ),
      
          m_scaleX ( 1.0f ),
          m_scaleY ( 1.0f ),
      
          m_originalHeight ( 240 ),
          m_originalWidth  ( 240 ),
      
          m_originalPixPerDeg ( 1.7f ),
      
          m_originalAdiCtr ( 120.0f, 120.0f ),
      
          m_backZ ( -30 ),
          m_faceZ ( -20 ),
          m_ringZ ( -10 ),
          m_caseZ (  10 )
      {
          reset();
          m_scene = new QGraphicsScene( this );
          setScene( m_scene );
      
          m_scene->clear();
      
          init();
      }
      
      qfi_ADI::~qfi_ADI()
      {
          if ( m_scene != nullptr )
          {
              m_scene->clear();
              delete m_scene;
              m_scene = nullptr;
          }
      
          reset();
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::reinit()
      {
          if ( m_scene )
          {
              m_scene->clear();
      
              init();
          }
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::update()
      {
          updateView();
      
          m_faceDeltaX_old  = m_faceDeltaX_new;
          m_faceDeltaY_old  = m_faceDeltaY_new;
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::setRoll( float roll )
      {
          m_roll = roll;
      
          if ( m_roll < -180.0f ) m_roll = -180.0f;
          if ( m_roll >  180.0f ) m_roll =  180.0f;
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::setPitch( float pitch )
      {
          m_pitch = pitch;
      
          if ( m_pitch < -25.0f ) m_pitch = -25.0f;
          if ( m_pitch >  25.0f ) m_pitch =  25.0f;
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::resizeEvent( QResizeEvent *event )
      {
          ////////////////////////////////////
          QGraphicsView::resizeEvent( event );
          ////////////////////////////////////
      
          reinit();
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::init()
      {
          m_scaleX = (float)width()  / (float)m_originalWidth;
          m_scaleY = (float)height() / (float)m_originalHeight;
      
          reset();
      
          m_itemBack = new QGraphicsSvgItem( ":/qfi/images/adi_back.svg");
          m_itemBack->setCacheMode( QGraphicsItem::NoCache );
          m_itemBack->setZValue( m_backZ );
          m_itemBack->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
          m_itemBack->setTransformOriginPoint( m_originalAdiCtr );
          m_scene->addItem( m_itemBack );
      
          m_itemFace = new QGraphicsSvgItem( ":/qfi/images/adi_face.svg");
          m_itemFace->setCacheMode( QGraphicsItem::NoCache );
          m_itemFace->setZValue( m_faceZ );
          m_itemFace->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
          m_itemFace->setTransformOriginPoint( m_originalAdiCtr );
          m_scene->addItem( m_itemFace );
      
          m_itemRing = new QGraphicsSvgItem( ":/qfi/images/adi_ring.svg");
          m_itemRing->setCacheMode( QGraphicsItem::NoCache );
          m_itemRing->setZValue( m_ringZ );
          m_itemRing->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
          m_itemRing->setTransformOriginPoint( m_originalAdiCtr );
          m_scene->addItem( m_itemRing );
      
          m_itemCase = new QGraphicsSvgItem( ":/qfi/images/adi_case.svg");
          m_itemCase->setCacheMode( QGraphicsItem::NoCache );
          m_itemCase->setZValue( m_caseZ );
          m_itemCase->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
          m_scene->addItem( m_itemCase );
      
          centerOn( width() / 2.0f, height() / 2.0f );
      
          updateView();
      }
      
      
      
      void qfi_ADI::reset()
      {
          m_itemBack = nullptr;
          m_itemFace = nullptr;
          m_itemRing = nullptr;
          m_itemCase = nullptr;
      
          m_roll  = 0.0f;
          m_pitch = 0.0f;
      
          m_faceDeltaX_new = 0.0f;
          m_faceDeltaX_old = 0.0f;
          m_faceDeltaY_new = 0.0f;
          m_faceDeltaY_old = 0.0f;
      }
      
      ////////////////////////////////////////////////////////////////////////////////
      
      void qfi_ADI::updateView()
      {
          m_scaleX = (float)width()  / (float)m_originalWidth;
          m_scaleY = (float)height() / (float)m_originalHeight;
      
          m_itemBack->setRotation( - m_roll );
          m_itemFace->setRotation( - m_roll );
          m_itemRing->setRotation( - m_roll );
      
          float roll_rad = M_PI * m_roll / 180.0;
      
          float delta  = m_originalPixPerDeg * m_pitch;
      
          m_faceDeltaX_new = m_scaleX * delta * sin( roll_rad );
          m_faceDeltaY_new = m_scaleY * delta * cos( roll_rad );
      
          m_itemFace->moveBy( m_faceDeltaX_new - m_faceDeltaX_old, m_faceDeltaY_new - m_faceDeltaY_old );
      
          m_scene->update();
      }
      
      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by J.Hilk
      #2

      @suslucoder
      taken from the documentation:

      Qt supports the static features of SVG 1.2 Tiny. ECMA scripts and DOM manipulation are currently not supported.
      

      https://doc.qt.io/qt-5/svgrendering.html

      does your SVG file comply ?


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      D 1 Reply Last reply
      3
      • J.HilkJ J.Hilk

        @suslucoder
        taken from the documentation:

        Qt supports the static features of SVG 1.2 Tiny. ECMA scripts and DOM manipulation are currently not supported.
        

        https://doc.qt.io/qt-5/svgrendering.html

        does your SVG file comply ?

        D Offline
        D Offline
        deleted286
        wrote on last edited by
        #3

        @J-Hilk

        does your SVG file comply ?

        Yes, they are

        1 Reply Last reply
        0
        • D deleted286

          When i run my code, my svg's does not appear on the screen. What can be the reason?
          There is no error code, i debug it but i cannot find any error also

          #ifndef QFI_ADI_CPP
          #define QFI_ADI_CPP
          #endif
          #ifdef WIN32
          #   include <float.h>
          #endif
          #include <math.h>
          #include "qfi_ADI.h"
          
          qfi_ADI::qfi_ADI(QWidget *parent):
              QGraphicsView(parent),
              m_scene ( nullptr ),
          
              m_itemBack ( nullptr ),
              m_itemFace ( nullptr ),
              m_itemRing ( nullptr ),
              m_itemCase ( nullptr ),
          
              m_roll  ( 0.0f ),
              m_pitch ( 0.0f ),
          
              m_faceDeltaX_new ( 0.0f ),
              m_faceDeltaX_old ( 0.0f ),
              m_faceDeltaY_new ( 0.0f ),
              m_faceDeltaY_old ( 0.0f ),
          
              m_scaleX ( 1.0f ),
              m_scaleY ( 1.0f ),
          
              m_originalHeight ( 240 ),
              m_originalWidth  ( 240 ),
          
              m_originalPixPerDeg ( 1.7f ),
          
              m_originalAdiCtr ( 120.0f, 120.0f ),
          
              m_backZ ( -30 ),
              m_faceZ ( -20 ),
              m_ringZ ( -10 ),
              m_caseZ (  10 )
          {
              reset();
              m_scene = new QGraphicsScene( this );
              setScene( m_scene );
          
              m_scene->clear();
          
              init();
          }
          
          qfi_ADI::~qfi_ADI()
          {
              if ( m_scene != nullptr )
              {
                  m_scene->clear();
                  delete m_scene;
                  m_scene = nullptr;
              }
          
              reset();
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::reinit()
          {
              if ( m_scene )
              {
                  m_scene->clear();
          
                  init();
              }
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::update()
          {
              updateView();
          
              m_faceDeltaX_old  = m_faceDeltaX_new;
              m_faceDeltaY_old  = m_faceDeltaY_new;
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::setRoll( float roll )
          {
              m_roll = roll;
          
              if ( m_roll < -180.0f ) m_roll = -180.0f;
              if ( m_roll >  180.0f ) m_roll =  180.0f;
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::setPitch( float pitch )
          {
              m_pitch = pitch;
          
              if ( m_pitch < -25.0f ) m_pitch = -25.0f;
              if ( m_pitch >  25.0f ) m_pitch =  25.0f;
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::resizeEvent( QResizeEvent *event )
          {
              ////////////////////////////////////
              QGraphicsView::resizeEvent( event );
              ////////////////////////////////////
          
              reinit();
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::init()
          {
              m_scaleX = (float)width()  / (float)m_originalWidth;
              m_scaleY = (float)height() / (float)m_originalHeight;
          
              reset();
          
              m_itemBack = new QGraphicsSvgItem( ":/qfi/images/adi_back.svg");
              m_itemBack->setCacheMode( QGraphicsItem::NoCache );
              m_itemBack->setZValue( m_backZ );
              m_itemBack->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
              m_itemBack->setTransformOriginPoint( m_originalAdiCtr );
              m_scene->addItem( m_itemBack );
          
              m_itemFace = new QGraphicsSvgItem( ":/qfi/images/adi_face.svg");
              m_itemFace->setCacheMode( QGraphicsItem::NoCache );
              m_itemFace->setZValue( m_faceZ );
              m_itemFace->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
              m_itemFace->setTransformOriginPoint( m_originalAdiCtr );
              m_scene->addItem( m_itemFace );
          
              m_itemRing = new QGraphicsSvgItem( ":/qfi/images/adi_ring.svg");
              m_itemRing->setCacheMode( QGraphicsItem::NoCache );
              m_itemRing->setZValue( m_ringZ );
              m_itemRing->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
              m_itemRing->setTransformOriginPoint( m_originalAdiCtr );
              m_scene->addItem( m_itemRing );
          
              m_itemCase = new QGraphicsSvgItem( ":/qfi/images/adi_case.svg");
              m_itemCase->setCacheMode( QGraphicsItem::NoCache );
              m_itemCase->setZValue( m_caseZ );
              m_itemCase->setTransform( QTransform::fromScale( m_scaleX, m_scaleY ), true );
              m_scene->addItem( m_itemCase );
          
              centerOn( width() / 2.0f, height() / 2.0f );
          
              updateView();
          }
          
          
          
          void qfi_ADI::reset()
          {
              m_itemBack = nullptr;
              m_itemFace = nullptr;
              m_itemRing = nullptr;
              m_itemCase = nullptr;
          
              m_roll  = 0.0f;
              m_pitch = 0.0f;
          
              m_faceDeltaX_new = 0.0f;
              m_faceDeltaX_old = 0.0f;
              m_faceDeltaY_new = 0.0f;
              m_faceDeltaY_old = 0.0f;
          }
          
          ////////////////////////////////////////////////////////////////////////////////
          
          void qfi_ADI::updateView()
          {
              m_scaleX = (float)width()  / (float)m_originalWidth;
              m_scaleY = (float)height() / (float)m_originalHeight;
          
              m_itemBack->setRotation( - m_roll );
              m_itemFace->setRotation( - m_roll );
              m_itemRing->setRotation( - m_roll );
          
              float roll_rad = M_PI * m_roll / 180.0;
          
              float delta  = m_originalPixPerDeg * m_pitch;
          
              m_faceDeltaX_new = m_scaleX * delta * sin( roll_rad );
              m_faceDeltaY_new = m_scaleY * delta * cos( roll_rad );
          
              m_itemFace->moveBy( m_faceDeltaX_new - m_faceDeltaX_old, m_faceDeltaY_new - m_faceDeltaY_old );
          
              m_scene->update();
          }
          
          JKSHJ Offline
          JKSHJ Offline
          JKSH
          Moderators
          wrote on last edited by JKSH
          #4

          @suslucoder said in Svg files does not appear on the screen:

          There is no error code, i debug it but i cannot find any error also

          Please simplify your code. Just write a small program that displays 1 PNG image and does nothing else.

          When that works, replace the PNG image with an SVG image.

          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

          1 Reply Last reply
          3

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved