[SOLVED]Widget vs Qt Quick
-
I'm using Qt for developing desktop and mobile applications. Recently I successfully compiled my desktop Widget based application on Android without modifying any line of the source code (although I faced "issue with full screen":https://qt-project.org/forums/viewthread/32025/) but some guys here pointed not directly that Qt Quick is more stable as mobile application so:
I wonder which one is better for developing desktop and mobile applications?
P.S. I never used Qt Quick before and Widget GUI fits my needs but I'm afraid that in the future Digia may kill it in favor of Qt Quick (They didn't introduce any new feature for Qt Designer while they "introduced ton of features for commercial Qt Creator for QML":https://blog.qt.digia.com/blog/2013/07/09/qt-creator-for-qt-enterprise-users/)
-
Widgets don't get much attention nowadays, but the will not be killed. They are a maintained module and most of Qt code out there depends on them.
That said, Qt Quick is really cool :) It probably is better on both mobile and desktop, but that depends on your use case.
-
bq. Widgets don’t get much attention nowadays... It probably is better on both mobile and desktop
Do you suggest to leave Widgets forever? I'm afraid to be come a cave man with Widgets if Qt project continue giving more attention to Qt Quick.
bq. but that depends on your use case.
I said to you; I'm using Qt for developing desktop and mobile applications and I don't want to make very changes in the code when I run any app. under mobile or desktop.
BTW, I'm very worry from Qt Quick because Digia introduced very important "features for commercial users":https://blog.qt.digia.com/blog/2013/07/09/qt-creator-for-qt-enterprise-users/ (connections editor is vital for me because I'm using "Go to Slot..." feature in Qt Designer while there are not alternative in Qt Quick editor) in same manner of Visual Studio Enterprise and Visual C++ Express which means open source developers have to write many lines to do something while commercial users can do it by beautiful fancy editors!
Another thing, I'm not sure from Qt Quick performance from speed side for example I made a tiny test to load a data of 1 million record from database I noticed that Qt Quick is very slow while Widgets worked fine (I'm sure this is not fair test but it may shows some weak points)
-
[quote author="mbnoimi" date="1378213738"]
Do you suggest to leave Widgets forever? I'm afraid to be come a cave man with Widgets if Qt project continue giving more attention to Qt Quick.[/quote]No! When I said they get less attention, I've meant just that. QtWidgets is still a maintained module (maintainer is from KDAB, IIRC). It's mature enough that it does not really need all developer's focus.
[quote author="mbnoimi" date="1378213738"]
Another thing, I'm not sure from Qt Quick performance from speed side for example I made a tiny test to load a data of 1 million record from database I noticed that Qt Quick is very slow while Widgets worked fine (I'm sure this is not fair test but it may shows some weak points)[/quote]I find it hard to compare QtQuick and QtWidgets. There are cases where widgets are better, and there are others where Quick is unmatched.
As for the performance, I'd rather say it's pretty decent. In real-world applications it's usually acceptable. And for Qt 5.2/ 5.3 a lot of improvements are planned: v4vm engine for running JS expressions, and a new Scenegraph renderer. Both provide significant performance gains (in some cases the code executes several hundred times faster than before).
-
[quote]As for the performance, I’d rather say it’s pretty decent. In real-world applications it’s usually acceptable. And for Qt 5.2/ 5.3 a lot of improvements are planned[/quote]
You mean the new improvements may essentially change the performance of QtQuick? if yes; personally do you encourage me to migrate to QtQuick or not?But I'm still worry about RAD tools of QtQuick because until now all effective tools are commercial while QtWidget has at least Qt Designer
-
Yes. Both v4vm and the new Scenegraph give both memory and CPU load improvements. They are mightily significant, although really I had no problems with QtQuick performance, even with old QtQuick1 on an Android device it ran smoothly. I don't care about GUI designer for QML myself, because I don't use it at all - I work in text mode only :)
I personally don't encourage you to do anything else than give QML a try. Both Widgets and QML are very good, both can be used in Qt code, both are maintained and developed by Qt Project. You need to get to know both technologies and then choose which is best for your specific use case. I can't make that decision for you.
-
bq. I personally don’t encourage you to do anything else than give QML a try.
I already gave it a try as I mentioned above the remained worrying thing is GUI designer because I found it a vital tool for RAD.
Any way, I think QtQuick is a fabulous piece of code but Digia policy with QtQuick isn't open source friendly so I'll keep stick to QtWidgets until something change.
Thank you sierdzio :)
-
Just an update: this wiki article shows nicely that both QtQuick and QtWidgets are getting updates: "link":http://qt-project.org/wiki/New-Features-in-Qt-5.2.
-
[quote author="sierdzio" date="1378183698"]
That said, Qt Quick is really cool :) It probably is better on both mobile and desktop, but that depends on your use case.[/quote]
I agree with you that Qt Quick is really cool :), but it has some drastic fall back compare to widgets solution(for me).1 : components of Qt Quick are basic, even control module is out the components of Qt Quick still not as rich as widgets if you want to develop desktop apps
2 : QtQuick2 need the support of openGL, if your platform do not have decent openGL support, you may not use it.
About the change of the engine, is it possible for us to pass the parameters of c++ and qml by "reference"(now or in the future)?
-
[quote author="stereomatching" date="1385481363"]About the change of the engine, is it possible for us to pass the parameters of c++ and qml by "reference"(now or in the future)?[/quote]
Not sure what you mean, but QtQuick in general works on QObject pointers, also JavaScript passes pointers (or references) around. So I think the answer is (and always has been) yes, but I may have misunderstood you.
-
[quote author="sierdzio" date="1385481659"][quote author="stereomatching" date="1385481363"]About the change of the engine, is it possible for us to pass the parameters of c++ and qml by "reference"(now or in the future)?[/quote]
Not sure what you mean, but QtQuick in general works on QObject pointers, also JavaScript passes pointers (or references) around. So I think the answer is (and always has been) yes, but I may have misunderstood you.
[/quote]It is the same problem on "this post":http://qt-project.org/forums/viewthread/29206/
The data between qml and c++ are always copy
@
public slots:
//can't declare like this
void test(QList<QUrl> &first, QList<QUrl> &second)
{}
@
@
//this one work, after experiment, the data between
//qml and c++ are always copy
void test(QList<QUrl> first, QList<QUrl> second)
{}
@
These are the result of Qt5.1, I don't know about Qt5.2(haven't experiend yet)
-
I don't think I've used those kinds of objects, maybe you are right. We'll see how it works with v4vm.