Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-76014

Maintaining large scale QML projects​ is hard




      • Weak typing makes refactoring difficult​. "var" properties and variables can contain objects of any type at runtime. In order to figure out if such a property would be affected by a refactoring, the program itself would have to be run.
      • Each component imports its own version of all its dependencies. This makes it hard to centrally upgrade to a new version of some dependency. Furthermore, it's easy to introduce incompatibilities by importing different versions of the same component.
      • QML scoping rules can lead to unexpected side effects​. Names are implicitly looked up in certain parent scopes (but not all) if not found locally. The rules governing this are rather confusing. It's easy to accidentally use a property of the wrong object.
      • Integration with the C++ type system can be cumbersome​. You need to manually register all your types via qmlRegister* calls in some initialization routine. Optimally the registration parameters should be derived from the class declaration and the registration done in generated code.


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              qt.team.quick.subscriptions Qt Quick and Widgets Team
              ulherman Ulf Hermann
              1 Vote for this issue
              9 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes