QQuickWidget vs QQuickView
-
Hi together,
I'm currently working on a plugin for a plugin-based open source project. I decided to implement the UI part with QML, rendered by an QQuickWidget into the QWidget-based UI.
But i have a lot of problems with this- External Drag and Drop doesn't work properly
- Rendering performance is really bad (juddery animations and so on)
if I open my QML Code in a external QQuickView (instead of a embedded QQuickWidget) all works really good and fluid... Does anybody has an idea why these two components behaves completely different?
My setup: Qt 5.4 OS-X 10.9.5
Thank you very much in advance!
Frime -
Hi @Frime,
Widgets are a much older technology. Mixing Qt Quick with Qt Widgets requires some compromises, which reduces performance. See the QQuickWidget documentation:
QQuickWidget.... comes at the expense of performance. Unlike QQuickWindow and QQuickView, QQuickWidget involves rendering into OpenGL framebuffer objects. This will naturally carry a minor performance hit.
...
Using QQuickWidget disables the threaded render loop on all platforms. This means that some of the benefits of threaded rendering, for example Animator classes and vsync driven animations, will not be available.QQuickView is not restricted by old widget technology, so it performs better.
-
Hi @Frime,
Widgets are a much older technology. Mixing Qt Quick with Qt Widgets requires some compromises, which reduces performance. See the QQuickWidget documentation:
QQuickWidget.... comes at the expense of performance. Unlike QQuickWindow and QQuickView, QQuickWidget involves rendering into OpenGL framebuffer objects. This will naturally carry a minor performance hit.
...
Using QQuickWidget disables the threaded render loop on all platforms. This means that some of the benefits of threaded rendering, for example Animator classes and vsync driven animations, will not be available.QQuickView is not restricted by old widget technology, so it performs better.
@JKSH Thank you very much! I overlooked that.
Now, I embed the QQuickView within a Window-Wrapper [createWindowContainer(..)]. Performance is much better, but resizing results in evil black/white flickering - especially on linux. But this is something I can deal with. Thanks!