Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Use QZXing in qml

Use QZXing in qml

Scheduled Pinned Locked Moved Solved QML and Qt Quick
13 Posts 4 Posters 6.4k Views 3 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.
  • M Offline
    M Offline
    MHermann
    wrote on last edited by MHermann
    #1

    Hi all,

    at the moment I am trying to use QZXing in my qml.
    But I am failing.
    If I try to compile I get the following error: "undefined reference to 'QZXing::registerQMLTypes()'"
    But decoding the qr code of an image in main() works.

    What I have done so far:

    • Downloaded QZXing source and compiled it to get libQZXing.so.

    • xxx.pro file:

      QT += core gui qml quick widgets multimedia
      ...
      LIBS += -L$$PWD/QZXing/ -lQZXing
      INCLUDEPATH += $$PWD/QZXing
      DEPENDPATH += $$PWD/QZXing
      
    • main.cpp:

      #include <QGuiApplication>
      #include <QQmlApplicationEngine>
      #include <QZXing.h>
      
      int main(int argc, char *argv[])
      {
          QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
          QGuiApplication app(argc, argv);
      
          QZXing::registerQMLTypes();
          QQmlApplicationEngine engine;
          engine.load(QUrl(QLatin1String("qrc:/main.qml")));
          if (engine.rootObjects().isEmpty())
              return -1;
      
          QImage qrCodeimageToDecode("/xxx/qrcode.png");
          QZXing decoder;
          decoder.setDecoder(QZXing::DecoderFormat_QR_CODE);
          QString resultQrCode = decoder.decodeImage(qrCodeimageToDecode);
      
          return app.exec();
      }
      

    Any ideas what I am doing wrong?

    raven-worxR 1 Reply Last reply
    0
    • M MHermann

      Hi all,

      at the moment I am trying to use QZXing in my qml.
      But I am failing.
      If I try to compile I get the following error: "undefined reference to 'QZXing::registerQMLTypes()'"
      But decoding the qr code of an image in main() works.

      What I have done so far:

      • Downloaded QZXing source and compiled it to get libQZXing.so.

      • xxx.pro file:

        QT += core gui qml quick widgets multimedia
        ...
        LIBS += -L$$PWD/QZXing/ -lQZXing
        INCLUDEPATH += $$PWD/QZXing
        DEPENDPATH += $$PWD/QZXing
        
      • main.cpp:

        #include <QGuiApplication>
        #include <QQmlApplicationEngine>
        #include <QZXing.h>
        
        int main(int argc, char *argv[])
        {
            QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
            QGuiApplication app(argc, argv);
        
            QZXing::registerQMLTypes();
            QQmlApplicationEngine engine;
            engine.load(QUrl(QLatin1String("qrc:/main.qml")));
            if (engine.rootObjects().isEmpty())
                return -1;
        
            QImage qrCodeimageToDecode("/xxx/qrcode.png");
            QZXing decoder;
            decoder.setDecoder(QZXing::DecoderFormat_QR_CODE);
            QString resultQrCode = decoder.decodeImage(qrCodeimageToDecode);
        
            return app.exec();
        }
        

      Any ideas what I am doing wrong?

      raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by
      #2

      @MHermann said in Use QZXing as library in qml:

      Any ideas what I am doing wrong?

      are you sure the libQZXing.so relies in $$PWD/QZXing/ ??

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      M 2 Replies Last reply
      0
      • raven-worxR raven-worx

        @MHermann said in Use QZXing as library in qml:

        Any ideas what I am doing wrong?

        are you sure the libQZXing.so relies in $$PWD/QZXing/ ??

        M Offline
        M Offline
        MHermann
        wrote on last edited by
        #3

        @raven-worx : Yes, I compiled it and copied it there.

        1 Reply Last reply
        1
        • raven-worxR raven-worx

          @MHermann said in Use QZXing as library in qml:

          Any ideas what I am doing wrong?

          are you sure the libQZXing.so relies in $$PWD/QZXing/ ??

          M Offline
          M Offline
          MHermann
          wrote on last edited by MHermann
          #4

          @raven-worx :
          The three lines

          QZXing decoder;
          decoder.setDecoder(QZXing::DecoderFormat_QR_CODE);
          QString resultQrCode = decoder.decodeImage(qrCodeimageToDecode);
          

          are executing without problems. And they are also used from libQZXing.so.

          raven-worxR 1 Reply Last reply
          1
          • M MHermann

            @raven-worx :
            The three lines

            QZXing decoder;
            decoder.setDecoder(QZXing::DecoderFormat_QR_CODE);
            QString resultQrCode = decoder.decodeImage(qrCodeimageToDecode);
            

            are executing without problems. And they are also used from libQZXing.so.

            raven-worxR Offline
            raven-worxR Offline
            raven-worx
            Moderators
            wrote on last edited by raven-worx
            #5

            @MHermann

            are executing without problems. And they are also used from libQZXing.so.

            Yes i overread that.

            seems the QZXING_QML macro definition is missing.
            Recompile the lib with CONFIG += qzxing_qml

            --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
            If you have a question please use the forum so others can benefit from the solution in the future

            M 1 Reply Last reply
            1
            • raven-worxR raven-worx

              @MHermann

              are executing without problems. And they are also used from libQZXing.so.

              Yes i overread that.

              seems the QZXING_QML macro definition is missing.
              Recompile the lib with CONFIG += qzxing_qml

              M Offline
              M Offline
              MHermann
              wrote on last edited by MHermann
              #6

              @raven-worx :
              I added the line

              CONFIG += qzxing_qml
              

              to QZXing.pro and compiled the lib again.

              I copied the new *.so files to my directory.
              But it behaves exactly the same...
              "undefined reference to `QZXing::registerQMLTypes()'"

              I forgot to mention, that I also added additional arguments in my project:

              DEFINES+=QZXING_QML DEFINES+=QML_MULTIMEDIA
              

              Any more ideas?

              raven-worxR 1 Reply Last reply
              0
              • M MHermann

                @raven-worx :
                I added the line

                CONFIG += qzxing_qml
                

                to QZXing.pro and compiled the lib again.

                I copied the new *.so files to my directory.
                But it behaves exactly the same...
                "undefined reference to `QZXing::registerQMLTypes()'"

                I forgot to mention, that I also added additional arguments in my project:

                DEFINES+=QZXING_QML DEFINES+=QML_MULTIMEDIA
                

                Any more ideas?

                raven-worxR Offline
                raven-worxR Offline
                raven-worx
                Moderators
                wrote on last edited by raven-worx
                #7

                @MHermann said in Use QZXing as library in qml:

                Any more ideas?

                No, this seemed pretty much the cause for issue to me.

                Alternatively - if its's an option for you - you could add include($$PWD/QZXing/src/QZXing.pri (and also add CONFIG += qzxing_qml) to your application's .pro file. Then QZXing is compiled into your binary directly.

                --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                If you have a question please use the forum so others can benefit from the solution in the future

                M 1 Reply Last reply
                2
                • raven-worxR raven-worx

                  @MHermann said in Use QZXing as library in qml:

                  Any more ideas?

                  No, this seemed pretty much the cause for issue to me.

                  Alternatively - if its's an option for you - you could add include($$PWD/QZXing/src/QZXing.pri (and also add CONFIG += qzxing_qml) to your application's .pro file. Then QZXing is compiled into your binary directly.

                  M Offline
                  M Offline
                  MHermann
                  wrote on last edited by
                  #8

                  @raven-worx :

                  This could also be a solution. But this would not be my preferred solution...
                  That would mean that the whole QZXing source code will be compiled too, each time I am compiling my own source code.
                  Or is it possible to exclude this from the compiling process and compile it only once?

                  raven-worxR 1 Reply Last reply
                  1
                  • M MHermann

                    @raven-worx :

                    This could also be a solution. But this would not be my preferred solution...
                    That would mean that the whole QZXing source code will be compiled too, each time I am compiling my own source code.
                    Or is it possible to exclude this from the compiling process and compile it only once?

                    raven-worxR Offline
                    raven-worxR Offline
                    raven-worx
                    Moderators
                    wrote on last edited by raven-worx
                    #9

                    @MHermann
                    it gets only recompiled when it needs to (when a source file changes, etc)

                    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                    If you have a question please use the forum so others can benefit from the solution in the future

                    M 1 Reply Last reply
                    1
                    • raven-worxR raven-worx

                      @MHermann
                      it gets only recompiled when it needs to (when a source file changes, etc)

                      M Offline
                      M Offline
                      MHermann
                      wrote on last edited by
                      #10

                      @raven-worx :

                      I added the QZXing source code via

                      include($$PWD/QZXing/src/QZXing.pri
                      

                      Now it is working.

                      1 Reply Last reply
                      2
                      • lukas_kosinskiL Offline
                        lukas_kosinskiL Offline
                        lukas_kosinski
                        Qt Champions 2025 Qt Champions 2023 Qt Champions 2022
                        wrote on last edited by
                        #11

                        Hi! If your project is based on C++, consider using SCodes. SCodes uses latest ZXing C++ port. It also allows you to generate QR/Bar codes. You can read more about it here.

                        I am the founder of Somco Software (formerly Scythe Studio). It is a services company focused on Qt development and embedded UX as well as Linux and connectivity.
                        More about us: https://somcosoftware.com/en

                        Happy to share insights and learn from others.

                        ekkescornerE 1 Reply Last reply
                        1
                        • lukas_kosinskiL lukas_kosinski

                          Hi! If your project is based on C++, consider using SCodes. SCodes uses latest ZXing C++ port. It also allows you to generate QR/Bar codes. You can read more about it here.

                          ekkescornerE Offline
                          ekkescornerE Offline
                          ekkescorner
                          Qt Champions 2016
                          wrote on last edited by
                          #12

                          @lukas_kosinski unfortunately SCodes only supports Code128 and QR

                          ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                          5.15 --> 6.9 https://t1p.de/ekkeChecklist
                          QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                          lukas_kosinskiL 1 Reply Last reply
                          0
                          • ekkescornerE ekkescorner

                            @lukas_kosinski unfortunately SCodes only supports Code128 and QR

                            lukas_kosinskiL Offline
                            lukas_kosinskiL Offline
                            lukas_kosinski
                            Qt Champions 2025 Qt Champions 2023 Qt Champions 2022
                            wrote on last edited by
                            #13

                            @ekkescorner I worked on that and now it supports much more formats. Currently it's a PR opened, but it should be soon merged:
                            https://github.com/scytheStudio/SCodes/pull/11

                            Sorry that I add the comment to a quite old post. I simply wanted people to know it and not be misled.

                            I am the founder of Somco Software (formerly Scythe Studio). It is a services company focused on Qt development and embedded UX as well as Linux and connectivity.
                            More about us: https://somcosoftware.com/en

                            Happy to share insights and learn from others.

                            1 Reply Last reply
                            2

                            • Login

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