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. How to use SVG
Forum Updated to NodeBB v4.3 + New Features

How to use SVG

Scheduled Pinned Locked Moved Unsolved General and Desktop
svgiconwidget
33 Posts 7 Posters 17.9k Views 2 Watching
  • 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.
  • S Saviz
    2 Jul 2021, 11:18

    @mrjj

    One question, I have done everything to the best of my abilities but I still get the error:
    "undefined reference to _imp_ZN10QSvgWidgetC1EP7QWidget"
    "undefined reference to _imp_ZN10QSvgWidget4loadERK7QString"

    Here is my code:

    qmake .pro:

    QT       += core gui
    QT       += sql
    
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets svg
    
    CONFIG += c++11
    
    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    RESOURCES += \
       Resources.qrc
    

    mainwindow.cpp:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QtSvgWidgets/QSvgWidget>
    #include <QtSvg>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        QSvgWidget* svg = new QSvgWidget(this);
        svg->load(QString(":/images/images/Dollar.svg"));
    
    
        ui->verticalLayout_3->addWidget(svg);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    

    mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif
    

    main.cpp:

    #include "mainwindow.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    

    (PS: I tried to add [include<QtSvgWidget>] but it doesn't exist by it's own. It is rather inside the "QtSvgWidgtes/QtSvgWidget")

    J Offline
    J Offline
    jsulm
    Lifetime Qt Champion
    wrote on 2 Jul 2021, 11:21 last edited by jsulm 7 Feb 2021, 11:22
    #9

    @Saviz Where is "QT += svg" in your pro file?

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    S 1 Reply Last reply 2 Jul 2021, 11:48
    2
    • J jsulm
      2 Jul 2021, 11:21

      @Saviz Where is "QT += svg" in your pro file?

      S Offline
      S Offline
      Saviz
      wrote on 2 Jul 2021, 11:48 last edited by
      #10

      @jsulm

      In the qmake .pro file that @mrjj kindly shared, in front of the "greaterThan(QT_MAJOR_VERSION, 4):" there was "QT += widgets svg" and that is what I did. I also tried adding the "QT += svg" to the top, but that did not do the trick.

      M 1 Reply Last reply 2 Jul 2021, 12:05
      0
      • S Offline
        S Offline
        SGaist
        Lifetime Qt Champion
        wrote on 2 Jul 2021, 12:02 last edited by
        #11

        Which version of Qt are you currently using ?

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        S 1 Reply Last reply 2 Jul 2021, 16:27
        1
        • S Saviz
          2 Jul 2021, 11:48

          @jsulm

          In the qmake .pro file that @mrjj kindly shared, in front of the "greaterThan(QT_MAJOR_VERSION, 4):" there was "QT += widgets svg" and that is what I did. I also tried adding the "QT += svg" to the top, but that did not do the trick.

          M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 2 Jul 2021, 12:05 last edited by
          #12

          @Saviz

          Hi
          it should work unless really old Qt.

          Could you try in build menu to use Clean all, run qmake and then press the run ?

          S 1 Reply Last reply 2 Jul 2021, 17:30
          0
          • S SGaist
            2 Jul 2021, 12:02

            Which version of Qt are you currently using ?

            S Offline
            S Offline
            Saviz
            wrote on 2 Jul 2021, 16:27 last edited by Saviz 7 Feb 2021, 16:34
            #13

            @SGaist

            Qt version 4.14.2 (That is what it says in the "About")

            I don't understand something, I just recently downloaded Qt. When I downloaded Qt I selected the Qt 6 version but now as you told me to look at the version it says 4.14,2. What is going on I am very confused. Did I make a mistake in the download process?

            1 Reply Last reply
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 2 Jul 2021, 16:47 last edited by
              #14

              No that's the Qt Creator version. There's no Qt 4.14.

              You have to take a look at the kit you are using.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              S 1 Reply Last reply 2 Jul 2021, 16:50
              0
              • S SGaist
                2 Jul 2021, 16:47

                No that's the Qt Creator version. There's no Qt 4.14.

                You have to take a look at the kit you are using.

                S Offline
                S Offline
                Saviz
                wrote on 2 Jul 2021, 16:50 last edited by
                #15

                @SGaist

                I took a look at the kit as you instructed.

                The kit version is: Qt 6.0.3 64bit

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  JoeCFD
                  wrote on 2 Jul 2021, 17:07 last edited by JoeCFD 7 Feb 2021, 17:16
                  #16

                  It was introduced from 4.1.
                  https://doc.qt.io/qt-5/qsvgwidget.html
                  QT += core gui widgets svg <=== you need widgets as well for qsvgwidget

                  If you simply need a QPixmap from a svg source for other widgets, use QSvgRenderer to paint one.

                  1 Reply Last reply
                  0
                  • M mrjj
                    2 Jul 2021, 12:05

                    @Saviz

                    Hi
                    it should work unless really old Qt.

                    Could you try in build menu to use Clean all, run qmake and then press the run ?

                    S Offline
                    S Offline
                    Saviz
                    wrote on 2 Jul 2021, 17:30 last edited by Saviz 7 Feb 2021, 17:30
                    #17

                    @mrjj

                    I tried doing what you suggested. Unfortunately it didn't work.

                    I first cleaned the project and then ran qmake but I still get the same errors.
                    Maybe I am doing something else wrong? (Like not including something?)

                    J 1 Reply Last reply 2 Jul 2021, 17:44
                    0
                    • S Saviz
                      2 Jul 2021, 17:30

                      @mrjj

                      I tried doing what you suggested. Unfortunately it didn't work.

                      I first cleaned the project and then ran qmake but I still get the same errors.
                      Maybe I am doing something else wrong? (Like not including something?)

                      J Offline
                      J Offline
                      JoeCFD
                      wrote on 2 Jul 2021, 17:44 last edited by JoeCFD 7 Feb 2021, 17:47
                      #18

                      @Saviz CONFIG += c++17 you also need 17 for Qt 6.
                      Show this line of your Makefile:
                      LIBS = $(SUBLIBS)
                      it should have -lQt5Svg

                      S 1 Reply Last reply 3 Jul 2021, 04:30
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 2 Jul 2021, 18:02 last edited by
                        #19

                        Drop the C++ CONFIG, you do not need that currently.

                        You should also consider updating to the latest Qt 6.1.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          JoeCFD
                          wrote on 2 Jul 2021, 18:14 last edited by JoeCFD 7 Feb 2021, 18:29
                          #20

                          @Saviz Another possibility is svg is not installed. Run MaintenaceTool to add it. I just installed Qt 6.1.2 in which svg is included. If you can find it in the Qt lib dir, check the path settings for Qt.

                          S 1 Reply Last reply 3 Jul 2021, 05:03
                          0
                          • J JoeCFD
                            2 Jul 2021, 17:44

                            @Saviz CONFIG += c++17 you also need 17 for Qt 6.
                            Show this line of your Makefile:
                            LIBS = $(SUBLIBS)
                            it should have -lQt5Svg

                            S Offline
                            S Offline
                            Saviz
                            wrote on 3 Jul 2021, 04:30 last edited by Saviz 7 Mar 2021, 04:31
                            #21

                            @JoeCFD

                            I don't see this line in my qmake file. Maybe that is the reason it doesn't work. Should I add it?

                            1 Reply Last reply
                            0
                            • J JoeCFD
                              2 Jul 2021, 18:14

                              @Saviz Another possibility is svg is not installed. Run MaintenaceTool to add it. I just installed Qt 6.1.2 in which svg is included. If you can find it in the Qt lib dir, check the path settings for Qt.

                              S Offline
                              S Offline
                              Saviz
                              wrote on 3 Jul 2021, 05:03 last edited by
                              #22

                              @JoeCFD said in How to use SVG:

                              MaintenaceTool

                              If I want to only install the SVG components, then what component do I have to select in the MaintenaceTool to install?

                              M 1 Reply Last reply 3 Jul 2021, 05:12
                              0
                              • S Saviz
                                3 Jul 2021, 05:03

                                @JoeCFD said in How to use SVG:

                                MaintenaceTool

                                If I want to only install the SVG components, then what component do I have to select in the MaintenaceTool to install?

                                M Offline
                                M Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on 3 Jul 2021, 05:12 last edited by mrjj 7 Mar 2021, 05:13
                                #23

                                @Saviz

                                Hi

                                It should be included in any of the installer options. Its not a standalone option.

                                I don't have Qt6 to test with.

                                So the project I linked cannot run under Qt6 ?

                                complains about svg ?

                                Try install the Qt 6.1.2 as @JoeCFD suggests

                                S 1 Reply Last reply 3 Jul 2021, 05:43
                                0
                                • M mrjj
                                  3 Jul 2021, 05:12

                                  @Saviz

                                  Hi

                                  It should be included in any of the installer options. Its not a standalone option.

                                  I don't have Qt6 to test with.

                                  So the project I linked cannot run under Qt6 ?

                                  complains about svg ?

                                  Try install the Qt 6.1.2 as @JoeCFD suggests

                                  S Offline
                                  S Offline
                                  Saviz
                                  wrote on 3 Jul 2021, 05:43 last edited by Saviz 7 Mar 2021, 05:53
                                  #24

                                  @mrjj

                                  I will give it a try. But my speed is not the best. It may take a while to download the new version. But I will report back how it went. Thank you all for your help

                                  M 1 Reply Last reply 3 Jul 2021, 06:25
                                  0
                                  • S Saviz
                                    3 Jul 2021, 05:43

                                    @mrjj

                                    I will give it a try. But my speed is not the best. It may take a while to download the new version. But I will report back how it went. Thank you all for your help

                                    M Offline
                                    M Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on 3 Jul 2021, 06:25 last edited by
                                    #25

                                    @Saviz

                                    Hi
                                    Else a sure bet is installing Qt5.15.
                                    While v6 does offer new things
                                    https://wiki.qt.io/New_Features_in_Qt_6.0
                                    Its mostly if you are using QML and it still has lots of features missing planned
                                    for some later releases.

                                    S 1 Reply Last reply 3 Jul 2021, 09:01
                                    1
                                    • M mrjj
                                      3 Jul 2021, 06:25

                                      @Saviz

                                      Hi
                                      Else a sure bet is installing Qt5.15.
                                      While v6 does offer new things
                                      https://wiki.qt.io/New_Features_in_Qt_6.0
                                      Its mostly if you are using QML and it still has lots of features missing planned
                                      for some later releases.

                                      S Offline
                                      S Offline
                                      Saviz
                                      wrote on 3 Jul 2021, 09:01 last edited by
                                      #26

                                      @mrjj

                                      Okay, I will try it. By the way I have one last question. Why isn't there a widget for SVG in QT Designer by default?

                                      M 1 Reply Last reply 3 Jul 2021, 09:08
                                      0
                                      • S Saviz
                                        3 Jul 2021, 09:01

                                        @mrjj

                                        Okay, I will try it. By the way I have one last question. Why isn't there a widget for SVG in QT Designer by default?

                                        M Offline
                                        M Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on 3 Jul 2021, 09:08 last edited by
                                        #27

                                        @Saviz

                                        • Why isn't there a widget for SVG in QT Designer by default?

                                        Too much work I would guess. To allow a Widget to be used in design time, a plugin must be made and maintained across many Designers.
                                        And QSvgWidget doesn't have any properties to set at Design time. (besides the svg file) so I gues sit was
                                        not worth the effort.

                                        You can use the Producer Promote feature to allow a Qwidget as a place holder in Designer and then app is run its
                                        the SVG one.

                                        S 1 Reply Last reply 3 Jul 2021, 11:56
                                        2
                                        • M mrjj
                                          3 Jul 2021, 09:08

                                          @Saviz

                                          • Why isn't there a widget for SVG in QT Designer by default?

                                          Too much work I would guess. To allow a Widget to be used in design time, a plugin must be made and maintained across many Designers.
                                          And QSvgWidget doesn't have any properties to set at Design time. (besides the svg file) so I gues sit was
                                          not worth the effort.

                                          You can use the Producer Promote feature to allow a Qwidget as a place holder in Designer and then app is run its
                                          the SVG one.

                                          S Offline
                                          S Offline
                                          Saviz
                                          wrote on 3 Jul 2021, 11:56 last edited by
                                          #28

                                          @mrjj

                                          Very interesting. Is there a documentation that I can use for the Producer Promote feature so I can learn it?

                                          M 1 Reply Last reply 3 Jul 2021, 12:31
                                          0

                                          18/33

                                          2 Jul 2021, 17:44

                                          • Login

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