Qt in C++ / Qt with Qt Quick... When to use what? Why is everything so QtQuick focused?
-
I'm mainly a C# / standard C++ developer. At least that's what what it feels like everyday at work...
I'm learning Qt these days, and I have a couple of questions.The one is the whole Qt Quick thing. I don't like shortcuts in general, and I'm not a fan of JavaScript as a language.
I'm not terribly good at CSS either. So when the focus on tutorials and articles on this site has a bias towards Qt Quick I'm getting a bit nervous.
Is it possible that Qt Quick is planned as a "light weight" replacement for the community version of the C++ Qt, and if you want the power of C++ you'd have to buy a corporate / commercial license?
Maybe I'm just paranoid and my mind is high on conspiracy. But being in the business for 17 years, I've seen a thing or two.Is Qt Quick like a GUI wrapper for your code, like we now have XAML for GUI work and may use C++ or any other compatible language as the back-end (like C#)?
I don't really understand when I would be in need of Qt Quick.
Is there things that can be done in Qt Quick but not in Qt/C++? If so what?
Can I concentrate on learning Qt with C++ and be sure not to miss out on anything except maybe productivity?Please answer this, as it is an important question running around in my head.
I kinda miss the days when Qt was Qt. Nothing more, nothing less, and it was enough...
-
Read this:
"QtQuick doc":http://qt-project.org/doc/qt-5.0/qtquick/qtquick-index.html
That explains a lot. I'm working with Qt for some time now and have never encountered or used QtQuick. From what I understand it is just a easy way to write a GUI wrapper around a program in XML way. So when a new look is needed, rewrite the wrapper and the program looks different, but is in C++ code the same.
Btw this is more a tools topic IYAM -
Apologies in advance, but my answer will be a bit chaotic: you as a lot of questions and I answer them in pretty much random order :)
Qt is primarily C++ and will stay this way. I don't think the commercial/ OS scenario you envisage is at all likely.
As for "wrapper" stuff:
Yes and no. Qt already does have XML description language for UI (Qt Designer .ui files that generate headers for QtWidgets). QtQuick is another, but completely different tool, because it's declarative and not imperative. It is indeed aimed to serve as a GUI frontend only (with C++ backend), but it's robust enough that one is able to create a full application purely in QML.Both Widgets and Quick are maintained modules of Qt. Qt is still Qt :)
[quote]Can I concentrate on learning Qt with C++ and be sure not to miss out on anything except maybe productivity?[/quote]
Yes. Out of over 24 Qt Project modules, only 3 are not about C++.
Although personally I would strongly suggest at least giving QML a short try. It's really a remarkable piece of software.
[quote]Is there things that can be done in Qt Quick but not in Qt/C++? [/quote]
A tough question. Strictly speaking: I don't think so. C++ is vastly superior when it comes to features (but the whole idea is that you can use it together with QML).
From a different angle, though, the answer could well be "yes". You can prototype and finalize great UIs in just several dozen lines of code that would require a few days or even weeks of work in pure C++.
For me the real benefit is the declarativness itself. Once I got through initial shock, it proved to be fantastic. It is definitely the way I want to be creating UIs. It feels more natural and intuitive for me.
....
OK that should be enough for now. Ask for more if you want. The answer to the most important thing for you - as far as I understand your post - is that C++ is not going away from Qt. Qt is C++, with some QML sugar on top.
-
Also, QML is designed to "interoperate with C++":http://qt-project.org/doc/qt-5.1/qtqml/qtqml-cppintegration-topic.html. You can manipulate QML code in C++, and vice-versa.
-
@sierdzio:
Thanks for a descriptive answer. I don't think it was chaotic at all! :-)
I cleared things up a bit, and made me more motivated for trying out QML, actually!
It's kinda like XAML for my C# / C++ Windows programming.
It makes the UI and the real language makes the stuff work.