Big Disappointing
Today I received some disappointing news. The tool I had
been using for about a year turned out to be unsuitable for me. I realized that
Qt QML was not the best choice for making Android and IOS apps because of the
huge limitations of the framework.
I have always loved doing things the hard way and
understanding how things work, not just using them. That’s why I fell in love
with C++ at first sight and spent years using the language in the console only.
But when I wanted to use the GUI, I found that there were only two options:
XWidget and Qt. After learning about Qt from http://zxstudio.org/, I was
impressed by its flexibility, cross-platform support and more. So a year ago,
on 04/03/2022, I started learning Qt with QML so I could make cross-platform
apps using C++ in the backend and QML, JS as my front end. And I thought the
learning curve wouldn’t be too hard because QML was just a UI language and no
logic was needed. Well, it turns out that learning Qt is a nightmare because of
all the limitations of the framework and the poor documentation. There are also
very few tutorials on some topics and most of them are outdated or unclear.
Even so, I tried to learn it because when I learn new stuff,
I use the 3-3-1 rule: 3 weeks, 3 months, 1 year. That’s a big review so I don’t
feel bad for giving up on something without spending enough time to learn it
properly. And after a year of trying and failing, this is what I found.
Ø
Qt QML does not have hot
reload, and the only option is to install a third-party tool called Felgo,
which is too slow and does not work with Android or IOS. The documentation is
poor and the user experience is bad. There is no support or help available.
Ø
The QML framework with
CMake and C++ is not clear. What I mean by that is that QML is based on JS, so
it should display without the need of debugging every time you change
something. And it does, if you are not importing any library or other component
from another directory or the same directory. Because if you do, it will show
you a message “The library NameOfYourComponent is not installed” and there is
no way around it. And that means every single time you change anything in the
UI, you need to rebuild and debug. And that’s very time-consuming.
Ø
No update push. And by that
I mean that if you make an app, you will have to send it to IOS or Android for
review every time you make an update. “IOS reviewers are a nightmare” and it
will take you 1 to 2 weeks to get an update approved. And most of the time they
will ask you to update something else, so to push an update it will take you
about a month or two.
Ø
Components in QML are a
real nightmare because you need to be very precise when you create them or you
will have to rewrite the whole page where you use the component. And that’s
because QML uses an anchor-based system to position things. This can be
frustrating and limiting for developers who want more flexibility and
creativity in designing their UI.
Ø
QDesigner ~<~ we son’t
talke about it 😉
And the biggest issue for me was the licensing. Qt
is a framework that relies on selling its technology to survive and grow.
But the licensing options are not flexible at all. There are only two types open
source that forces you to respect LGPL version 3, GPL version 2 and GPL
version 3, and While the open source license was an option, I did not
want to share my source code with the world. In the other hand we have commercial licensing
that costs $302 per month. And the problem with that as an individual
programmer who is working on a project that hopes to get him to a better
position, I don’t want to share my source code. But at the same time, I don’t
have the money to pay $302 per month. And that was the biggest drawback I had.
This makes Qt inaccessible and unattractive for many developers who want more
freedom and affordability in their choice of framework.
In conclusion, if you are a C++ developer who wants to make
games or apps and wants to use a cross-platform framework and either you have
$301 per month and another $180 per month for QDesign, or you don’t mind
sharing your source code and you are ready for all the headache you will get
trying to deal with the limitations of Qt QML instead of focusing on your
project, then Qt is a great framework for you. Or you can run away like I’m
doing right now XD
0 Comments
Post a Comment