As of Qt 5.1, is Qt Quick + Controls ready for creating desktop applications with custom widgets
Hello. I have been using Qt4 and PyQt4 for some time. I am now embarking on a new project where I have to provide a widget that provides some domain-specific vector graphics editing capabilities. (Yes I know of existing FOSS projects like Karbon but those are generic and I have specific needs.)
Specifically based on the Qt 4 model I am visualizing the use of QGraphicsView for this purpose. Lots of existing Linux distributions already come with Qt4 and PyQt4 also and it would be simple for other platforms also I presume. OTOH Qt 5 is rather new and may not be instantly available on all platforms. (For instance people running Kubuntu Precise LTS may have to do it from a PPA and I don't want to force that unless absolutely necessary.) And PyQt5 is only now coming out.
So I would like to know a few things:
Is QGraphicsView expected to soon become an outdated mode of accomplishing such things?
How practically feature complete is Qt Quick for desktop development, especially with the latest addition of the desktop-oriented Qt Quick Controls in Qt 5.1?
Given that I am currently thinking of using QGraphicsView is it possible to use Qt Quick (which uses QSceneGraph IIUC) to accomplish everything that QGraphicsView can do?
I ask the above questions because I was myself suspecting and also reading comments about QWidgets taking so many years to arrive at the maturity where it is -- if Qt Quick is not yet ready then, it might be good for me to stay with QWidgets i.e. QGraphicsView.
Given all this would you advise me to stick with Qt 4 + QGraphicsView or go for Qt 5 + QSceneGraph?
Thank you for your thoughts!
Possibly. However, there are no plans to deprecate or remove it. Sleep safe :)
IMO, it's ready. People have different opinions here, though, and it depends on your use case. Definitely, both Widgets and Quick have their benefits, so it's best to pick whatever suits your project best. From my own experience, I'll say that QML and declarative mindset is the way to go. It's just so easy to build the UI this way :)
QtQuick1 uses QGraphicsView, QtQuick2 uses Scene Graph - both are available in Qt5. Again, this is up for a debate, but scene graph is rather potent in power :) Functionality of scenegraph and QGraphicsView does not fully overlap, so they can't really be objectively compared without going into specific details.
If your project will be used by other people, stick with Qt4 for a while, as Qt5 is still not in all repos.