Qwidgets in QML
-
I think mixing QML and QWidget is not easy, nor future prove. But using it side by side is easy. You can easily control your QWidget based application from QML by declaring your own items which emit/receive signals.
-
There are couple of things..
- Do you want to create instances of native qt widgets inside qml or
- You want to make a concrete native qt widget create in C++ class and make it available inside qml??
The second one is easy and make sense to do it. But first method is bit hard as mostly not all useful properties/methods are exposed to meta system via Q_PROPERTY/Q_INVOKABLE, so are not available inside qml.
-
Qt comes with an example that shows how to embedded widgets in qml:
examples/declarative/cppextensions/qwidgetsThere are a couple of problems though:
You can not nest widgets with QML easily.
There is a clash of philosophies. In C++ you keep pointers to widgets to manipulate them. In QML visual items adapt to property changes. Having pointers to widgets breaks the separation between C++ (back end) and qml (front end). -
you can refer to http://doc.qt.nokia.com/4.7/qdeclarativeexamples.html#c-extensions
-
I've had all kind of troubles (painting artefacts, bad performance, ...) with embedding QWidgets in QML scenes. It just does not work very well.
I guess the Qml Desktop Components won't become official/stable before Qt 5 so for desktop applications that must have a native look and feel I would recommend using the classic QWidget approach.
-