HowTo read QR Code - Qt Quick Controls 2 APP, mobile platforms


  • Qt Champions 2016

    for the upcoming Qt World Summit Conference App there's a feature request to read Attendee Data from QR Code printed on badge.

    at first I thought this should be easy because reading and writing QR Code is common stuff for mobile apps these days.
    also have done with BlackBerry 10 Cascades (https://developer.blackberry.com/native/reference/cascades/bb__cascades__multimedia__barcodedetector.html) where some lines in QML did it. unfortunately Cascades isn't Open Source and targeted only to BlackBerry 10 devices

    seems there's no easy way to read QR Codes from a Qt 5.7 Qt Quick Controls 2 App running on Android, iOS, Windows10
    found some libraries targeted to 4.8, others with reported issues 'not running on mobile
    or found examples with Qt Widgets

    didn't found any Qt example app doing this for Qt Quick Controls 2 App on mobile platforms.
    perhaps I have overlooked something

    also have to mention that I never did any multimedia stuff yet with Qt 5.7 and never included a 3rd party library

    thanks for any hints, input, examples


  • Moderators

    @ekkescorner

    Maybe this is of some help for you.


  • Qt Champions 2016

    @koahnig thx - haven't seen this before.
    will try next days if https://github.com/a-team-fr/MeetupMobileQtQml/tree/master/160229/DemoProject will also work with QtQuickControls2 App



  • I can recommend QZXing. Did some tests with it a few months ago (only Android) and it worked really well.


  • Qt Champions 2016

    @Schluchti thx for the info


  • administrators

    @ekkescorner the a-team-fr example is made by @Charby if he's around he can probably answer questions if you run into something.


  • Qt Champions 2016

    @tekojo thx, Tero.

    Or does someone out there already converted the project to QtQuickControls2 App ?


  • administrators

    @ekkescorner well, that was simple...
    on a desktop at least. I don't have a mobile toolchain working, so that might need some work, but updating to Controls 2, is pretty much no work.

    In main.qml (it's the only file with Controls in use):

    • change the QtQuick.Controls version to 2.0
    • comment out the ProgressBar lines 117-124
    • comment out the Slider lines 175-182

    Neither element is essential for the app (zooming and under/over exposure just get in the way).

    Also force the camera to manual focus, as that seemed to improve identification a lot on my desktop.

    (And on a Windows machine add #include <algorithm> everywhere there is std::min or std::max, but that is just Windows)


  • Qt Champions 2016

    @tekojo thx.
    have you set HighDPI and Material ?
    in main.cpp:

    QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
        qputenv("QT_QUICK_CONTROLS_STYLE", "material");
        QGuiApplication app(argc, argv);
    


  • @ekkescorner in addition to tekojo, you could also keep the zooming working by simply replacing "minimumValue" with "from" and "maximalValue" with "to". If I remember correctly the example was not operating with iOS because grabToImage was not working correctly at that time, I guess this should be no longer the case anyhow. It was working fine with Android. Regarding HighDpi and material, your code to activate seems good, did you experienced problem with it ? If that could help, during a previous meetup we did play with QtControls2 and the workshop material is here : https://github.com/a-team-fr/MeetupMobileQtQml/tree/master/160330
    If you are interested in I could share source code of an almost fully functional application (iOS and Android) with QrCode recognition. I planned to publish this app a few days before engin.io notification to ramp down (and the app is highly using it) so the project is useless but the camera part with QrCode could be helpful...


  • Qt Champions 2016

    @Charby hi - thx helping. I tested the existing project without any changes on Android (6.0 device) and wasn't able to get a QR Code recognized. tried manual, auto, ...
    also tried on iPhone6S w iOS10 and the app crashed.
    for now I run out of time - will do some more tests on tuesday in San Francisco



  • @ekkescorner I have a QAbstractVideoFilter based barcode filter using based on QZXing, works pretty very well. The code is a bit tied to an app that is not yet public (it will be eventually), but I put quickly together a git repo with the relevant sources, it builds but otherwise totally untested, available here https://github.com/oniongarlic/qt5-barcodevideofilter


  • Qt Champions 2016

    @oniongarlic thx. just on my way to QtWorldSummit in san francisco.
    will try it out on tuesday.
    btw: have you tested on android and ios ?



  • @ekkescorner I've tested my app that uses that code on Android & Desktop. I don't have any iOS devices but if QAbstractVideoFilters are usable on iOS then I don't see (than perhaps the raw image format, but then that "just" needs a converter) why it wouldn't work.


  • Qt Champions 2016

    @oniongarlic thx again for your help. downloaded your repo and opened project in Qt Creator.
    set kits for android, osx and ios
    trying to build I'm getting symbols not found for OSX, some errors building for ios and uncount errors trying to build for android.

    at the moment have no idea howto go gon.
    howto get rid of the errors and howto include this lib into another app.
    do I have to copy all your content into my own app or do I have to build your lib and refer to this from other projects ?
    in this case do I need different builds for targeted platforms ?

    sorry for these questions - I'm not so familiar with this.



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.