QtQuick or QtWidget [closed] - qt

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I have an application in the works to display stock market graphs.
I retrieve the courses from the Internet and display them on my application, with a lot of customization, tracking available and potentially live.
I hesitate to do it with Qwidget or QtQuick.
QtQuick is well suited if the window is often resized? I move the sizes of my windows a lot.
I see on one side people say that QtQuick is more for tablet etc and QtWidget is more for pc.
And on the other hand, I've seen a lot of people saying they switch their desktop application from QtWidget to QtQuick either professionally or personally, and they often say they don't want to go back.
My project may take me some time and I would like to take the most optimized one between the two.
I code in python but I would probably translate my code in C++.
I would do the prototype in python and the final version in C++.
QtQuick is really adaptable with python? Loading data, indicators to place on the graph etc. are handled with QtQuick or externally with python/c++ ? I really have a hard time projecting myself with QtQuick even if after all I read about it, I really prefer to start with it.
Basically, I'd like to do something like this.
So, I need to be able to customize the style of my application, I need performance to display the graphs and be able to add indicators/line drawing by hand etc. with good performance.
I would start more easily by doing my project with QtWidget than if I switch to QtQuick, I need to learn the QML from the beginning.
QtQuick seems fine to me but I'm afraid of making a mistake, and I don't want to waste time doing my application with QtQuick if it's not adapted.

My suggestion is Qt Quick.
Because Qt Quick is developed in 2010 after ios and android came out. In my opinion, after that Qt Community began to focus on Qt Quick more than Qt Widget. Most of guiders suggest that Qt Widget is for Desktop apps, Qt Quick is for ios, Android and embedded but you can either use both for all. After I checked your app which is in your link, as a user who used Qt widget and Qt Quick I think you will feel more comfortable yourself by using Qt Quick.
Here is some examples which are available in Qt. You can easily use them when you installed Qt from Examples. These examples are related to your project according to your reference link. Checking out the examples related to your subject will give you a better idea before beginning your project.
Qt Quick:
1- Multiple Graph Example
2- Scene Graph Example
Qt Widget:
1- Diagram Scene Example
2- 400 Chips Example
3- Graphics View Example
Here is also a good video comparing Qt Quick and Qt Widget.
Is QtQuick adaptable with python?
Yes, here is the reference but Qt Widgets projects use C++.
Good Luck!!!

Related

Best framework/language for cross-platform modern GUI designs

Qt Widgets is my daily driver right now, but I feel like it is getting too basic for my needs and I am looking for something which is a bit more advanced.
What is a good language and framework for this task?
Thanks
If you're familiar with Qt, QtQuick can be a logical next step. QtQuick offers far more graphical functionality and modern capabilities than Qt widgets by comparison.
The learning curve for QML can be a little steep at first, but the included examples when you install Qt do a pretty good job introducing the major concepts. Once I got the hang of it I've never wanted to bother with Qt widgets again.

which Qt project type we should use?

New to Qt. In the official Qt tutorial, it says:
To set up a project, you first have to decide what kind of an application you want to develop: do you want a user interface based on Qt Quick or HTML5 or Qt widgets.
We plan to use Qt to do medical image display, and also use Qt to build a GUI application to control a medical device. They will be two different projects.
Which Qt project type we should use for them?
Docs say:
QWidgets are a better choice if your UI is comprised of a small number of complex and static elements, and QML is a better choice if your UI is comprised of a large number of simple and dynamic elements.
I say:
If you're going for desktop applications I'd suggest Qt Widgets, you don't have to ship the final app with libs for QML and the whole source will be written in C++ (faster, simplier so easier to debug).
QML would be a nice alternative if you want to create phone/tablet (touch experience in general).
I would argue that between Qt Quick and Qt Widgets there is no objectively right answer. In theory, one should be able to replicate any UI using either method - because at the end of the day, they are both using QtGui behind the scenes. So functionality is probably not an issue.
One thing to note is that Qt Quick (i.e., QML) is designed explicitly to make UI programming require much less code, and much less C++ knowledge. I would say it achieves this goal very well.
However, at the end of the day, I think it mostly comes down to what language your developers are already familiar with. If you have a team of C++ pro's, then I would go with Qt Widgets - if only because it's going to be very easy for them to pick up, and it's something they're already familiar with. (I'm guessing this is the case because you're already writing C++ code for your project).
If, on the other hand, your developers are already very good at QML (or, more generally, JavaScript - which QML is heavily influenced by), then I would go with Qt Quick for the same reasons.
I know of two types of Qt UI: Qt Quick and widgets.
Widgets behave like most other UI toolkits out there, you have a GUI editor and a tree of UI objects. They are pretty mature and look like most standard UIs.
Qt Quick is the newer Qt UI toolkit. It uses a domain specific declarative language (QML) to specify the user interface and JavaScript for interactions. There are also plans to offer Qt widgets inside the Qt Quick framework, but I'm not sure how far that project has gotten. Qt Quick is meant to deliver more dynamic / custom user interfaces.
As far as I know Qt will continue to support both approaches in the foreseeable future so which one you pick depends on your use-case.

Qt, QML and Windows 8 [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I always been curious about QML introduced by Qt framework. But never had a chance to work with it. But now with Windows 8 coming, old school widget based interface is going to get outdated (just my opinion! :) ). Now I want to ask those, who had some experience with QML: Is it easy to write Metro-style (or how is it called nowadays) applications with QML? Is the QML photoshop plugin useable for real project?
For those who don't have a clue about Photoshop plugin, try search in youtube: Introducing Qt Quick for Stunning UI Creation - Nokia Developer Day, Barcelona 2011 (not sure, whether I can post links here :P)
Also, Is there any good Windows applications I can look, written in QML?
is there any good Windows applications I can look, written in QML?
Go through the trending Qml repositories at GitHub to get a good idea. People are implementing material design ideas in QML as well. Correct me if am wrong but lot of Sailfish's UI was done in QML as well. Infact, the SDK for the OS is based on Qt/QML.
I am personally fond of GCompris. They moved from GTK to QML and have been able to run their code on several platforms including Windows/Android/OSX etc.
is it easy to write Metro-style applications with QML?
I would personally say that qml is very capable of developing the fluid 'metro like' UIs in a very intuitive and easy way.
You can go through the links given here to get started on QML.
You can start with the Qt Wiki on it, and go through how to create Metro style applications and read about deploying on Windows 8.
Is the QML photoshop plugin useable for real project?
I havent used the Photoshop one, but the one for GIMP (YES! is exists for GIMP as well, man open source developers do some nice work!!!). Although it might not be very intuitive in its approach to generate files, but it still is a very nice tool to work on single files (screens), when your UI is not expected to change at all.
It gives hard coded values to pixels ( eg: width : 45 ) instead of writing it in a dependent way ( eg. parent.width * .75 ), thus in case there are modifications in UI you might end up modifying a lot.
And personally I would say qml is just awesome to learn and have fun.
And thanks hyde for that link.
Edit:
Also go through these:
A video showing the Metro like effects, written in qml
A video showing the IVI capability of qml. Just so that you can get an idea of what qml might be capable in terms of animations etc.

Qt or wxWidgets [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I'm going to start working on a new project. It's a 3D game using OpenGL for Windows, Linux and Mac OS X. and I'm going to need a library for GUI, windowing and handling input. I ended up with 3 choices Qt, WxWidgets and GTK+. All of them are under LGPL license.
1- Does LGPL allow to use these libraries to make proprietary applications?
2- Which one of these 3 applications is best for me?
Yes, so long as you don't statically link to them (ie: use them as DLLs). Though wxWidgets allows you to statically link without becoming GPL'd.
None of the above. If you are making a 3D game, then none of these is good for your needs. The needs of a GUI for a game are very different from the needs of a GUI for a typical desktop application. In a game, you want you particular GUI elements to be consistent with a particular artistic direction, not be consistent with the desktop environment. Plus, you may want your GUI elements to be more expressive than what these toolkits would normally allow.
It is for reasons like this that CEGUI exists. That is a GUI system designed for the needs of a game.
Also, none of these provide input the way a game generally wants to process it. You typically want something lower level for a game than what these toolkits provide. That's why projects like SDL and SFML exist.
1 - Yes, provided that your project doesn't require alteration of the library itself
2 - I strongly reccommend Qt for new windowed apps, if for no other reason than it has excellent documentation (although there are many other winning points, but it gets subjective quite quickly). GTK and WxWidgets will both make you waste mental energy thinking about things you really shouldn't have to think about. Qt is easier to a) customise, and b) ignore when you don't care about customisation.
Although for 3D stuff you might want to look into full-blown engines like, ooh, Irrlicht or Ogre3D or any of a number of others
WxWidgets uses LGPL which means you can dynamically link to it in your project, without it forcing your project to be GPL or LGPL.
However, I suggest using CEGUI instead of the libraries you suggested, for any game or rendering application
CEGUI uses the MIT license which is less strict than LGPL and also allows you to link to the library dynamically (preferred) or statically, both without forcing you to have a specific license for your own project.
Supports OpenGL 3.2+ Core Profile (OpenGL3 Renderer)
Supports very old OpenGL versions (OpenGL Renderer)
If you want to use Ogre or Irrlicht engine, which can also rely on OpenGL, CEGUI also supports these two renderers via the CEGUIOgreRenderer and CEGUIIrrlichtRenderer
Ssupports Windows, Linux and Mac OS X, just as you want
Because someone asked in the comments: Unicode characters are fully supported so that you can use Hebrew, Arabic, all sort of Asian alphabets, etc, as shown in the current Font Demo - of course you need to install either one of the CEGUI fonts or use another Open Source Font
Was specifically designed for games, simulation and rendering applications
You can skin all elements in the UI (currently only via XML, soon also using an editor)
Provides a powerful editor (CEED) for layout editing with WYSIWYG (!) for free!
Is fully extendable and adaptive via changes in C++ code and/or XML
Powerful Event System
It might take a bit to set CEGUI and its dependencies up and get it to run with your project but it will still pay off on the long run because it has a lot more features than most free solutions for UI. Imagine how annoying it would be if you used an UI library and then found out it does not provide a specific feature you need and that it would be almost impossible to add this - because CEGUI is based on C++ and XML and because of its design, you can always add specific adjustments to CEGUI. So you will most likely not run into limitations even on the long run. Also it already has a lot of features out of the box - more than comparable libraries.

'Traditional Qt' or 'Qt Quick' for a desktop program? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Nokia has just introduced Qt Quick (build UI declaratively like using CSS/HTML) in the recent beta versions of Qt, check this example page, it can build fancy and modern UI, very cool!
On the opposite, the UI developed by 'traditional Qt' seems to be less fancy (I might be wrong, see disclaimer below).
So my question is, would you use 'Traditional Qt' or 'Qt Quick' for a new desktop program? Why?
My initial thoughts:
'Traditional Qt':
Pros:
The overall technologies used be less, thus simpler, if you use PySide, you only code in Python, don't have to mess with the CSS/JS-like things in Qt Quick;
It's maturer.
Cons:
Building fancy UI seems to be more difficult?
'Qt Quick':
Pros and cons: the other way around.
Edit: Qt Quick has a downside, correct me if I'm wrong, you can't design Qt Quick UI in a WYSIWYG way, right?
Disclaimer: I'm new to Qt, PySide and Python, just recently has started evaluating using these tech to build desktop programs.
ave been messing up with qml for my desktop and i personally found this:
its easier to create animations than in traditional qt/c++/pyqt (i loved the animations :)
I haven't looked through all examples but the code size of qml apps looks smaller than equivalent apps in c++
Problems i have found with qml
has poor qml design support- at the moment custom elements dont show up in qml designer.This is a big pain coz ideally i should get a designer to create my ui and i concentrate on the code. Their qml designer still needs some work
You are expected to learn javascript since its the "recommended" way of scripting in qt. Javascript is NOT easy as you may expect eg learning python took me a few hours but javascript looks superficially similar to c but some of its concepts are different. Also i wonder if i can protect intellectual property in an app written i just javascript and qml.(correct me if am wrong)
native widgets are not available in qml eg it just offers rectangles, etc which you combine to form your own widgets.
This has not stopped me from playing with qml and as it matures, i shall adopt a wait and see attitude. Currently am using qml for part of my ui and c++ for the backend.
You made one mistake: Qt Quick is not available only in a beta version of Qt. It has been part of the official Qt release since 4.7 (although each minor version significantly improved the features offered by Qt Quick).
Although the "normal" Qt UI (with QWidgets and layouts and all) is older, this doesn't necessarily mean Qt Quick is immature. It is part of the release, after all.
One thing you fail to point out in your pro's and cons is performance: "normal" Qt UI's are prebuillt (for the most part, basically), and Qt Quick UI's rely on runtime interpretation of QML and CSS/HTML as you say. This will mostly not impact application speed on a desktop system, but if you run into performance bottleneck because you're making the UI too fancy, don't say I didn't warn you. Although such a bottleneck probably means you should've gone OpenGL from the beginning.
Qt Quick provides an easy way of building a cool UI (that's the selling point anyway) and will allow you to use cooler effects in an easier way than the old stuff.
If you are using Python then you probably are not concerned about performance. Traditional Qt allows for fancy looks, too via QSS. What Qt Quick gives is a way to easily build a UI (even without tooling support that is being introduced in 4.8) and use scripting to make it work.
You can make fancy UIs with tradtional Qt, too, mainly via QSS and deriving existing widgets. Most Qt examples don't focus on this but that doesn't mean it can't be done. It also probably gives a better overall performance, especially if coded in C++.
I would use traditional Qt because I'm more familiar with it. But this is subjective anyway, so I think your question will be closed.
I have not so experience on traditional Qt UI systems. But I can give you my experience on QtQuick:
UI using QML is more simple.
QML enables you to better developing using MVC pattern. It makes View separated from Model. You can load different version of the UI in runtime.
QML enables developing advanced UI.
It is very performant now (using QSceneGraph technology). It is implemented on multiple UI threads! I am not sure that you can make more performant UI using C++ anymore!
UI designers can develop UI simpler than HTML+CSS+Javascript!
You can develop your custom UI element by C++ using specific classes.
QML is based on OpenGL and in free version of Qt you need to notice that.
QML has a specific debugger and profiler. Debugging in UI is so easy.
If you want to develop your app using a standard patten like MVC, QML may be more suitable.
You need to be careful about performance notes.

Resources