Qt is changing from C++ library to QML library... with KDAB
-
As you can see on the KDAB website, Qt is listed with Qml and not with C++. In other words KDAB is considering Qt to be a QML library now.... and if you look in the examples, there is almost no C++ examples... its all QML.
Anybody have any thoughts on this ??
-
I have a large list of QML examples with my newest version of Qt, it keeps growing... at the same time as the C++ examples are reduced.
Look carefully at this picture from the KDAB website.
You can see that they are experts on Qt, C++ and 3d / OpenGl, but they are not mentioning QML in this sentence. That is because they are including QML as a synonym with Qt. KDAB are QML experts, so why not list it here ?? unless they are considering it part of Qt, as if Qt is a QML library.
Se the other image in my other post about this, where they have Qt/QML listen together.
What is going on with this ??
Anybody have any though on the matter ?? We really do not want to invest further in the use of Qt if it is going to turn further in to a QML library ...
-
Hi,
Disclaimer I'm not working for KDAB.
From a quick look: it's for Qt applications and QML applications. Most people associate "Qt application" with widget based application thus C++ based application.
No, Qt is not becoming a QML Library, it's a large C++ framework and that won't change any time soon.
-
-
@SGaist said in Qt is changing from C++ library to QML library... with KDAB:
Hi,
Disclaimer I'm not working for KDAB.
From a quick look: it's for Qt applications and QML applications.
Most people associate "Qt application" with widget based application thus C++ based application.
No, Qt is not becoming a QML Library, it's a large C++ framework and that won't change any time soon.Seriously, Qt started out making it easier to use C++ with Trolltech so many years ago, and now they are making it easier to use QML.. that is a different direction than Qt started out in... and what I call a new course for Qt.
The original purpose of Qt was to make it easier to use C++... how can anybody say that this still stands ?? with all this QML ... ?
-
I hear what you are saying, but It seems to me that more than half of Qt is now QML. How can we continue to cal Qt a C++ framework if half of it is QML ???
-
This is not just my feeling. Like I have showed on images from KDAB website, they consistently refer/promote Qt for QML.
Their C++ consultancy is listed separated from anything Qt related. -
The examples in QtCreator now seem to have more QML than C++
I find it hard to see how people are going to continue to see Qt as a C++ framework. I have been involved in marketing of products for over 20 years, and to me it really seems like QML is dominating peoples Qt vocabulary in many circles already. User interfaces made in QML is easy etc. and I have nothing against QML. I just do not like that this is all mixed in to the same pot.
What are the reason for not separating these two, clearly in their marketing, and make the QML version a separate library, or at least an optional module that you can include. From a marketing perspective this would make it clear that QML is not Qt to new users. It should be a separate library or a module that can be included, not a part of Qt directly - because Qt is a C++ framework.
But I fear that this is not where it is going.... Qt is mostly about making it easier to develop application with user interfaces, graphics / 2d / 3d made in QML...
I hear what you are saying, but Qt is not big on widgets anymore, people use QML for user interfaces all over the place today.
One can only speculate as to how KDAB uses Qt as a platform to promote themselves. They are clearly on a different path than the original Qt development was - where the goal is to make it easier to use C++
This is obviously not only KDAB, as there are more forces draggin QML to the front than just KDAB. I am mentioning KDAB here just as one of the examples, to illustrate where Qt seem to be going. KDAB is just a very good example.
Just wanted to add as a final note, that QML related topics here in the forum could easily be estimated to around 50 % of all topics. If you combine all the topics in the mobile related sections that are mostly QML related, with the once in the QML section, and you then add all the QML topics from the general development section, Im sure you reach close to 50 % if you devide by all topics posted after Quick and QML became big in Qt.
-
-
Hi @A-K-G
I can't speak for KDAB, but they are a consulting company that does many things.
I can clearly see that they do several different styles of consulting, Qt, QML, plain C++, OpenGL and 3D, based on the clip you have in your post.This means that if you want help with any of those technologies you can ask them about it.
Also writing that "KDAB presents Qt as a QML library - not C++ library". No they don't. KDAB is telling you, that if you need help with Qt or QML, you can contact them and discuss about your needs.
I do have to say that you are going quite overboard by drawing conclusions from quite simple marketing material.
As for Qt and QML, this is a topic that has been communicated a lot by the Qt Company in the past years.
Everything in Qt is written in C++ and you can write everything in your app with C++. QML is an easy way to create user interfaces and thus helps you out in a lot of places. It is simple and speeds up the UI work a lot. -
@tekojo said in Qt is changing from C++ library to QML library... with KDAB:
Also writing that "KDAB presents Qt as a QML library - not C++ library". No they don't.
I do have to say that you are going quite overboard by drawing conclusions from quite simple marketing material.First of all, thank you very much for taking the time to read my thoughts on this, and I really appreciate that took the time to read all that I have written on this topic. I appreciate your input.
- I am writing something to the effect that KDAB is presenting Qt as a QML library. By that I am not saying that they tell people that it is a QML library, because in conferences and in their material they also tell you that you can use Qt3D with C++, but let me underline that statement. You can ALSO use it with C++. That is what they say. Now does that not mean that the main focus is on QML ?
Seriously, if all I talk about during a seminar is QML and Qt3D, and then in a few sentences in between, I mention that you can also use it with C++, then I have in fact presented Qt as a QML library. I agree that they have not said directly that it is, but they have presented it as if it is.
-
I am going overboard? I have to take it seriously that it is perceived that way, and maybe I have to accept that I did go a bit overboard. But it is not drawing conclusion only from marketing material that I have presented in the pictures. Those are just examples to illustrate. I am sorry if that was not clear. My reason for reacting, it based on the total of what they say, both in their marketing material on their website, all the talks they have given that you can find on Youtube and other places, what they have said in seminars etc.
-
I am not against QML, and I am not against Qt3D, in fact I love Qt3D for obvious reasons, what I am against is degrading Qt's reputation and association as a C++ framework. I think KDAB is doing that, even though they have done an amazing job with the code. One can not close the eyes to negative sides, just because other sides are very good. There is a total picture to look at.
-
KDAB is one of many, but they are the most extreme, therefor mentioned as example here. I totally find it unacceptable to charge they amounts they do, and that is not because of myself and my business, we just use other ways. But it makes a very clear statement about Qt, that I find negative for the product. Qt have struggled in the past with licencing issues, that was resolved so most people can us it. I don't like factors that make it hard for people to choose Qt.
-
I still think you are reading too much into marketing material.
The KDAB web pages are pretty clear that they provide a lot of different services, and the division there is something that makes sense to marketing (i.e. the main buzzwords that people recognise are present)For seminar talks the problem is always the lack of time. The speaker needs to select the topic very tightly to keep within time limits.
As said on the other thread, I suggest taking the issue to the Development mailing list. The technical people of the project are there and they can evaluate the issue further.
-
@tekojo said in Qt is changing from C++ library to QML library... with KDAB:
Everything in Qt is written in C++ and you can write everything in your app with C++. QML is an easy way to create user interfaces and thus helps you out in a lot of places. It is simple and speeds up the UI work a lot.
While I agree on the other points, here I'll make one dissentious remark:
It is true Qt is written in C++, but the fact of the matter is in practice not everything you can do in QML can be done feasibly in C++. While Qt3D (which is developed by KDAB for @A-K-G's and other's information), provides a dual C++/QML API, this isn't exactly the case, to my knowledge at least, for the QtQuick Controls module. And this point - the lack of an usable and consistent C++ API - has been raised on occasion on the mailing list. So I wouldn't go as far as to say that everything you can do with QML you can do with C++, as one of the core modules you'd need to follow the tech trend set by QML inevitably binds you to using declarative UI (which is perfectly fine) and javascript, which is the thing some people want to avoid by using C++. So I'd venture to speculate the lack of C++ API is actually somewhat hurting the adoption of QML, because some of us would still avoid it if it means writing down large javascripts to tie up the user interface and consequently would continue to stick to the widgets (which has its own drawbacks).
-
@kshegunov said in Qt is changing from C++ library to QML library... with KDAB:
It is true Qt is written in C++, but the fact of the matter is in practice not everything you can do in QML can be done feasibly in C++.
Based on what you are saying, it sounds like KDAB is giving information that is not true. You are referring to the Qt3D in your post, and you are saying that quote: "this isn't exactly the case"
(NOTE added Aug 17: The statement above was not correct, I missread what kshegunov said - se the following posts)In other words, there are things you can do in QML that you can not do in C++ so Qt3D is not a pure C++ library. To get complete features, you must use QML.
That surely puts things in perspective if this is the case.
I say that because you can draw such information a bit further and say that the solution that is provided is definitely promoting the use of QML over C++, and that supports my initial claim - simply because you can not even do all in C++.
This means that Qt has developed a dependency on QML, and Qt has already changed away from being a pure C++ library. The other poster said this would never happen, but it sounds like it already did happen.
Can not come to any other conclusion if it not possible to say that 100 % of Qt can be done in C++.
Qt has already developed a substantial dependency on QML. -
@A.K.G. said in Qt is changing from C++ library to QML library... with KDAB:
Based on what you are saying, it sounds like KDAB is giving information that is not true. You are referring to the Qt3D in your post, and you are saying that quote: "this isn't exactly the case"
This isn't what I wrote, you pulled it out of context. I explicitly wrote that Qt3D provides a dual C++ and QML API. My beef is with the Qt Quick controls module not having a C++ API, but then again it never advertised otherwise; one can still use the widgets instead.
-
@kshegunov said in Qt is changing from C++ library to QML library... with KDAB:
This isn't what I wrote, you pulled it out of context. I explicitly wrote that Qt3D provides a dual C++ and QML API. My beef is with the Qt Quick controls module not having a C++ API, but then again it never advertised otherwise; one can still use the widgets instead.
Im very sorry, it was not my intension to pull anything out of context, English is not my main language, I am Norwegian, and I read this different than what you inteneded to say.
So you are saying that this is NOT the case for Qt3D, but it is the case for Qt Quick ??? Is that correct ??
In other words, you are saying that - you can do all of the Qt3D with C++ ?? Or you are not claiming eather way, just mentioning that there at least is a C++ api for Qt3D ??
I really appreceat your time on this, and thank you for your replies.
QtQuick is by the way one of the things that is important to this discussion, becasue the Qt Quick module is the standard library for writing QML applications. Now, you can then extend QML applications with C++ code... now what do you call that ?? That is a QML library/framework where you can add some C++ code...
How in the world you can call that a C++ library, is beyond me.... I am not just taking stuff from KDABS marketing, etc. I am basing this on for example the Qt documentation of the QtQuick library, where you can read the above statements loud and clear.
I can not agree that Qt can be considered a C++ framework anybore - because you write QML applications with it that can be extended with some C++ code...
-
Hi
Im cannot share your concerns :)
QtQuick and QtQuick 2 is written in c++
All of QML is made in c++
Its meant to be used for dynamic user interfaces where the traditional widgets are uncommon or unwanted.
Its not meant to replace Qt c++ , nor can it at all.If you read the docs, you will see the recommendation is to use
QML for front end and c++ for back end.
QtQuick 2 is not Qt.
Its a very tiny part of all the classes.
http://doc.qt.io/qt-5/classes.htmlSo just as Qt is not a python library because there are bindings for python,
having the ability to define new types with c++ (AND QML) for QML,
does not alter in anyway that Qt is a c++ framework and will always be.
Just look at the sources. All c++.QML is just a tech. Nothing more. It would not exist without c++.
-
Thank you :-) that was a good way to explain it.
I think I am not clear on what I mean by word considered. Let me explain.I am working on getting schools, universities and colleges in parts of the Philppines to use C++ with Qt when teaching the students, and put away VisualBasic. This to help the students get experience with a more relevant technology.
What I experience is that more and more people that start playing with Qt, after I make this suggesting, come to me asking me about Javasript and QML... wondering why all that stuff is in there.
So techinically we can say that all is made in C++ etc. like you explained in a short and easy way, (I will use that when I explain this later) but people see QML as javascripting user interfaces if you understand what I mean, and its hard for me to get that impression to unstick..
For a student that picks up Qt to make an application, and then looks in the examples etc. it looks like this is a library that helps her make QML applications.
Is it really not possible to see that it looks this way to people that starts out with Qt ??
-
As already mentioned: QML is dependent on Qt/c++, not the other way around.
If you'd like to do or teach others how to do something without QML: don't add quickcontrols2, quick, charts, etc to your project. Problem solved?
I don't see why you wouldn't expose the declarative paradigm to new minds... it is far superior to <shudders> vb.
You can still do OpenGl/Vulkan/anything else c++ etc ... when people advance. Not every c++ app needs to be a QML app.
Also, RE: QML - you don't have to use Javascript blocks. Show off what you can do with Bindings, Property/NumberAnimations, Behaviours, States and Transitions... there's so much that literally doesn't ask for JS code.
-
Technically speaking, C++ is a single programming language but practically it's a bunch of multiple languages for different programming paradigms stuffed into that single language. We have domains in C++ for procedural programming, object oriented programming, meta programming, functional programming. Qt extends this with event-driven programming. For everything that can't be done in an easy / convenient way in C++, domain-specific languages are made accessible through libraries. DSLs that Qt supports are e.g.:
- SQL for databases
- OpenGL shader languages
- CSS for styling of widgets
- HTML / CSS for richtext
- PHP regular expressions
- JSON, XML, *.ini for data serialization
- qmake's language for the control of the application building process
- ECMA script for application scripting
QML is just another domain-specific language. The only thing that makes it kind of unique in this context is that AFAIK the Qt project offers the only implementation of a QML engine yet. There is no reason to pull QML support out of the Qt project like there is no reason to e.g. pull XML support out of it. And as QtQuick is vital for Qt as a cross platform GUI enabled framework, it's a no-brainer why QtQuick is maintained by the Qt project and not some unrelated 3rd-party.
-
@Wieland said in Qt is changing from C++ library to QML library... with KDAB:
There is no reason to pull QML support out of the Qt project as there is no reason to e.g. pull XML support out of it.
That is all very clear. I appreciate how you explained all that.
In general, not referring to Qt : When accessing a database, writing C++ language statements to use pre written code, we are using C++ and can consider that part of a C++ library. But if we are writing statemes in a different language to access that database, we are no longer writing C++, no longer using a C++ library.
So Qt is no longer a C++ library, but multiple librarys in mulitple laguages. It is a framework that includes librarys in multiple languages. So why are so many people insisting that Qt is a C++ framework/library ??
I hear you, and I hear other people explaing this stuff, but in my simple brain this just does not make sence. Sorry, but for me it just sounds like Qt is a framework where you use multiple langues, not just C++ / and therefor can not be called a pure C++ framework.
Sorry people, maybe I am just really slow...
-
So why are so many people insisting that Qt is a C++ framework/library ?
Well, our earth is called "the blue planet" because it looks blue when observed from a distance. A closer look reveals it's indeed very blue but not 100%. The overwhelming part of Qt sources is libraries, written in C++, exposing a C++ API. But there are also language bindings to Python and also non-library code, e.g. Creator, Designer, MOC , QBS and qmake. If you're looking for a C++ framework for cross platform development, you'll find Qt. Almost all of the code you'll write will be in C++ then. Almost all if not all your business logic will be C++. Same for the plumbing code that keeps everything together. But you'll probably also use inline Assembly for performance optimizations, SQL strings to communicate with a database, or OpenGL shader language to talk to the GPU. Or maybe you'll link your stuff to some old Fortran library. I can't think of any serious, or bigger, application that 100% only utilizes a single programming language, nor do I know a single programmer that only speaks one language.
-
@A.K.G. said in Qt is changing from C++ library to QML library... with KDAB:
So Qt is no longer a C++ library, but multiple librarys in mulitple laguages. It is a framework that includes librarys in multiple languages. So why are so many people insisting that Qt is a C++ framework/library ??
Qt is split into modules, and different modules will provide different things and have different requirements. As @Wieland said, you end up using a multitude of tools and languages in a tight package. Think about it like this:
Does it mean that Qt's not a C++ library because it uses XML for the .ui files - the designer forms? Surely not. Does it stray from C++ by providing reflection, meta type information and other goodies through the meta object compiler (the moc), surely not. Those are just tools for development, but they're bundled in some module (or tool) as they're critical for one task or another. QML is no different, it's just like the .ui files the designer gives you, only the syntax is different (leaving the actual implementation aside).
Or even more straightforwardly: Does it mean Qt's not a C++ library/framework if it exposes python or java bindings?
What you mean by "a pure C++ library" Qt hasn't been from its earliest days. Practically forever Qt has been using a combination of macros, auto generating and pre-compiling C++ code (moc), XML files (widgets' ui files), its own build (qmake) and documentation (qdoc) systems to provide additional functionality and extend the (C++) language where it's been lacking - Qt has had reflection, meta object information, dynamic properties and more, way back; before it was even conceived adding it to the C++ standard. This mixing and matching is neither new, nor unexpected, so I don't really understand your point with QML. -
@kshegunov said in Qt is changing from C++ library to QML library... with KDAB:
This mixing and matching is neither new, nor unexpected, so I don't really understand your point with QML.
Yes, I can see how that is not clear. My perspective was from the eyes of young people that are not familiar with Qt. Students that open QtCreator for the first time, ask me if this is not a C++ library, because they find themselves reading about QML to follow the examples on how to create window etc.
When they are using Visual Basic, they are reading up on VB code, how to create user interfaces etc. but when using Qt they are not reading up on C++ but QML, and get confused about what Qt really is.
I think it is hard for experienced users of Qt to understand this perspective, because it all makes to much sence for you to be able to see how it looks for people that do not have all the pieces of the pussle that you have.
This is why I think there is a difference in how the marketing is perceived by people familiar with Qt and advanced development in C++ and people that are toatally new to programming.
Qt just does not look the same to these two groups of people it seems like.