Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Version des Modul-Imports prüfen (QML) für alle QML Dateien

Version des Modul-Imports prüfen (QML) für alle QML Dateien

Scheduled Pinned Locked Moved Unsolved German
10 Posts 2 Posters 800 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.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo Zusammen,

    da wir einen bestimmten Qt Creator Version einsetzen, wollen wir alle QML Dateien in diesem Projekt prüfen, ob diese die richtige Import hat.

    Ziel wäre diese Prüfung automatisch zu starten bei projekt Build.

    Habt ihr eine Idee, wie ich diese durchführen kann?

    Danke in voraus

    J.HilkJ 1 Reply Last reply
    0
    • G Galilio

      Hallo Zusammen,

      da wir einen bestimmten Qt Creator Version einsetzen, wollen wir alle QML Dateien in diesem Projekt prüfen, ob diese die richtige Import hat.

      Ziel wäre diese Prüfung automatisch zu starten bei projekt Build.

      Habt ihr eine Idee, wie ich diese durchführen kann?

      Danke in voraus

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      Hi, @Galilio

      ich hab mir vor geraumer Zeit ein kleines Programm geschrieben um genau so etwas herauszufinden.

      Du kannst es gerne verwenden/anpassen,

      aber eine automatisierte Variante hierfür kenne ich leider nicht.

      #include <QCoreApplication>
      #include <QDir>
      #include <QFile>
      #include <QTextStream>
      #include <QVector>
      
      #include <QDebug>
      
      const QString targetInport("2.12");
      const QString keyword;
      const QVector<QString> fileEndings({"qml"});
      
      const bool noComment = true;
      
      void findAndCheckQtQuickImport(const QString &line, const QString &path){
          static const QString checkStr("import QtQuick ");
          if(line.contains(checkStr)){
              if(!line.contains(targetInport)){
                  qDebug() << "Wrong QtQuick Import of" << line << "in file:" << path;
              }
          }
      }
      
      int countLines(const QString &path){
          QFile f(path);
          int cnt = 0;
          int cntDbg(0);
      
          if(f.open(QIODevice::ReadOnly | QIODevice::Text)){
              QTextStream read(&f);
              QString line;
              bool comment = false;
              while(!read.atEnd()){
                  cntDbg++;
                  line = read.readLine();
      
                  if(!keyword.isEmpty() && line.contains(keyword,Qt::CaseSensitivity::CaseInsensitive/*Sensitive*/)){
                      qDebug() << "Keywords found at Line"<< cntDbg << "in File" << path << "\t" << line.trimmed();
                  }
      
                  findAndCheckQtQuickImport(line,path);
      
                  if(noComment){
                      line = line.simplified();
                      line.replace(" ","");
      
                      if(line.size() > 0){
                          if(line.leftRef(2) != "//"){
                              if(line.contains("/*"))
                                  comment = true;
                              if(line.contains("*/"))
                                  comment = false;
                              if(!comment)
                                  cnt++;
      //                        else
      //                            qDebug() << line;
                          } else {
      //                        qDebug() << line;
                          }
      //                    else
      //                        cnt++;
                      }
                  } else
                      cnt++;
              }
          }
          f.close();
          return cnt;
      }
      
      int parseDir(const QString &path){
          int cnt = 0;
          QDir dir(path);
          QStringList dirs = dir.entryList(QDir::AllDirs |QDir::NoDotAndDotDot);
          QStringList file = dir.entryList(QDir::Files);
          for(const QString &dir : dirs){
                  cnt += parseDir(path + "/"+dir);
          }
      
          for(const QString &s : file){
              if(fileEndings.contains(s.split(QChar('.')).last()))
                  cnt += countLines(path + "/"+s);
          }
      
          return cnt;
      }
      
      int main(int argc, char *argv[])
      {
          QCoreApplication a(argc, argv);
      
          int count = 0;
      
          QString parse("/path/to/Source/Folder");
          count +=parseDir(parse);
      
      
          QTextStream out(stdout);
          out << "Lines in project: " << parse << ": "<< endl <<count << endl;
      
          return a.exec();
      }
      

      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.

      1 Reply Last reply
      1
      • G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        @J-Hilk
        danke dir

        Eine andere Frage: Da dieser Überprüfung nicht mit der Application zu tun hat wollen wir diese Prüfung in einem UnitTest auslagern und diese Prüfung sollte in einem Script geschrieben werden.

        Was meinst dazu?

        J.HilkJ 1 Reply Last reply
        0
        • G Galilio

          @J-Hilk
          danke dir

          Eine andere Frage: Da dieser Überprüfung nicht mit der Application zu tun hat wollen wir diese Prüfung in einem UnitTest auslagern und diese Prüfung sollte in einem Script geschrieben werden.

          Was meinst dazu?

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #4

          @Galilio
          Ich hab wenig Erfahrung mit Test-Skripts aber, du kannst natürlich Das Programm ein wenig anfassen und ändern, sodass es den Pfad via argument abruft, und über den StandardOutput Erfolg oder Fehler ausspuckt.

          Dann könnte es einfach als externes Programm ausgeführt werden. Das sollte ja möglich sein.


          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.

          1 Reply Last reply
          1
          • G Offline
            G Offline
            Galilio
            wrote on last edited by
            #5

            @J-Hilk
            vielen dank

            Gibt es für jede Qt Version einen Quick reference, wo alle Qt Quick referencen aufgelistet sind.

            Ich habe so was ähnlich von ICS gefunden aber es steht nicht detailliert genug.

            Es werden z.B nicht die Reference von 5.12.2 sondern die Version 5.12 aber ich hätte gerne die Referencen 5.12.3 z.B.

            Weiss du wo ich solche Liste finden kann?

            Danke noch mal

            J.HilkJ 1 Reply Last reply
            0
            • G Galilio

              @J-Hilk
              vielen dank

              Gibt es für jede Qt Version einen Quick reference, wo alle Qt Quick referencen aufgelistet sind.

              Ich habe so was ähnlich von ICS gefunden aber es steht nicht detailliert genug.

              Es werden z.B nicht die Reference von 5.12.2 sondern die Version 5.12 aber ich hätte gerne die Referencen 5.12.3 z.B.

              Weiss du wo ich solche Liste finden kann?

              Danke noch mal

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #6

              @Galilio bin mir nicht ganz sicher, was genau du meinst.
              Welche Referenzen genau, in welchem Zusammenhang?


              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.

              1 Reply Last reply
              0
              • G Offline
                G Offline
                Galilio
                wrote on last edited by
                #7

                @J-Hilk

                Jede Qt Version hat einen bestimmten Library und somit auch QML.
                z.B für Qt Version 5.9 sind die (Qt Quick Object Types) import QtQuick 2.9, (Qt Quick Dialogs QML Types ) import QtQuick.Dialogs 1.2,....

                Da es z.B von Qt 5.9 mehrere Versionen gibt wie 5.9.1, 5.9.2, 5.9.3....5.9.9. Meine Frage für alle diesen Versionen gibt es einen QML Quick Reference (z.B so was in der Art https://www.ics.com/sites/default/files/QML_Reference_A4_031616.pdf)

                Diese Reference ist für 5.6 allgemein aber von Version 5.6 gibt es mehreren Versionen 5.6.1,5.6.2.... so was suche ich .
                Danke in voraus

                J.HilkJ 1 Reply Last reply
                0
                • G Galilio

                  @J-Hilk

                  Jede Qt Version hat einen bestimmten Library und somit auch QML.
                  z.B für Qt Version 5.9 sind die (Qt Quick Object Types) import QtQuick 2.9, (Qt Quick Dialogs QML Types ) import QtQuick.Dialogs 1.2,....

                  Da es z.B von Qt 5.9 mehrere Versionen gibt wie 5.9.1, 5.9.2, 5.9.3....5.9.9. Meine Frage für alle diesen Versionen gibt es einen QML Quick Reference (z.B so was in der Art https://www.ics.com/sites/default/files/QML_Reference_A4_031616.pdf)

                  Diese Reference ist für 5.6 allgemein aber von Version 5.6 gibt es mehreren Versionen 5.6.1,5.6.2.... so was suche ich .
                  Danke in voraus

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #8

                  @Galilio
                  mmh, nicht das ich wüsste.

                  Ich schlage in der Regel immer alles in der online Dokumentation nach. Der ist immer die neueste hinterlegt. Aber bei jeder Funktion / Property steht dabei, in welcher Qt Version sie hinzu gefügt wurde.


                  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.

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #9

                    Hallo zusammen,

                    ich komme zurück zu den oben genannten Thema.
                    Ich bin auf folgende gestossen:https://doc-snapshots.qt.io/qt5-5.9/qmltypes.html
                    Diese Seite bescheibt alle QML Type ja nach dem für welche Qt Version sich handelt.

                    Meine Frage: Gibt es eine Liste wo alle Quick Import aufgelistet sind.
                    Es ist echt sehr mühsam jede diese QML type zu öffnen und der Import anzuschauen.
                    Eine andere Nachteil ist diese Listen sind nur für Version 5.0, 5.1, 5.2,.....5,14
                    aber wie ist mit diese Version 5.9.1 z.B. ?

                    Danke

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      Galilio
                      wrote on last edited by
                      #10

                      Hallo zusammen,

                      was ich eigentlich meine ist so eine Liste in diesem Art:

                      import QtDataVisualization 1.2
                      import Qt3D.Animation 2.9
                      import QtCharts 2.2
                      import QtQuick.Controls 2.2
                      import Qt3D.Animation 2.9
                      import QtDataVisualization 1.2
                      import Qt3D.Render 2.0
                      import QtSensors 5.0
                      import QtQuick.Controls 1.4
                      import QtPositioning 5.2
                      import Qt3D.Render 2.0
                      import QtQuick.Controls 2.2
                      import QtQuick.Controls.Styles 1.4
                      import QtAudioEngine 1.1
                      import Qt3D.Render 2.0
                      import QtMultimedia 5.8
                      import QtWebEngine 1.5
                      import QtQuick.VirtualKeyboard 2.2
                      import QtQml 2.2
                      import QtGraphicalEffects 1.0
                      import QtBluetooth 5.2
                      import Qt.labs.calendar 1.0
                      import QtCanvas3D 1.1
                      import QtLocation 5.3
                      import QtQuick.Extras 1.4
                      import QtQuick.Window 2.2
                      import Qt.labs.platform 1.0
                      import QtQuick.Dialogs 1.2
                      import QtQuick.Layouts 1.3
                      import Qt3D.Core 2.0
                      import Qt3D.Extras 2.0
                      import QtQml.Models 2.2
                      import QtQuick.Particles 2.0
                      import QtWinExtras 1.0
                      import QtScxml 5.8
                      import Qt.labs.folderlistmodel 2.1
                      import Qt3D.Logic 2.0
                      import QtQml.StateMachine 1.0
                      import Qt3D.Input 2.0
                      import QtWayland.Compositor 1.0
                      import QtNfc 5.2
                      import QtPurchasing 1.0
                      import QtQuick.XmlListModel 2.0
                      import QtWebView 1.1
                      

                      Zur Zeit suche ich alle mögliche Import Manuel, was nicht unbedingt praktisch ist.

                      Danke

                      1 Reply Last reply
                      0

                      • Login

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