[Interest] Draw own QQuickItem using OpenGL together with QQuickApplicationEngine
Axel Jäger
axeljaeger at googlemail.com
Thu Dec 10 16:31:38 CET 2015
Hello Sean,
thank you for your help. Now I got it working.
However, I have the feeling that although this works, this is not the proper
way to do what I want. What do you think? Is this a hack or is it the proper
way to draw an own item using OpenGL?
Best regards,
Axel
-----Ursprüngliche Nachricht-----
Von: Interest [mailto:interest-bounces at qt-project.org] Im Auftrag von Sean
Harmer
Gesendet: Sonntag, 6. Dezember 2015 10:46
An: interest at qt-project.org
Betreff: Re: [Interest] Draw own QQuickItem using OpenGL together with
QQuickApplicationEngine
Hi,
On 05/12/2015 23:28, Axel Jäger via Interest wrote:
> Hello,
> I am trying to start a new application and want to start with the most
> modern possible codebase so I am looking into different options. The
> application I want to develop consists of a large OpenGL-View togehter
> with some slider next to it to change some parameters of the view. I
> have a large experience in building widget based applications in Qt
> but just for the fun, I want to go for QML way.
>
> I found this example that shows how to combine OpenGL-Drawing with
> with
> QML-Items:
>
> http://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html
>
> Then I found the Qt Quick Controls template in QtCreator that uses
> QQuickApplicationEngine which seems even more sophisticated than just
> using a QQuickView with a QML-File as a root item.
> I tried adopting the first example to use QQuickApplicationEngine by
> changing the main-method according to the template and changed the
> main.qml to use ApplicationWindow instead of Item as the root object.
> The effect is that I see all the QML Items in a window but the custom
> opengl drawing is not displayed. I see from the debugger that the
> opengl drawing code is executed.
>
>
> Attached you will find my modified example. I guess that I just did
> something very stupid and the viewport of my custom opengl items is
> something like 0x0.
> I would be very happy if there was a an example that uses
> QQuickApplicationEngine to load a qml-file with an ApplicationWindow
> and that does some OpenGL drawing besides QtQuick based controlls.
> Any help is greatly appriciated.
You're almost there. The clue is if you change the rendering to be done as a
result of the afterRendering() signal instead of beforeRendering() it works.
So that means the GL code is all fine. So, something must either be clearing
or drawing on top of your GL rendering.
It turns out that the ApplicationWindow by default paints itself with the
widget colour. You can use a style to disable this like so:
ApplicationWindow {
visible: true
width: 320
height: 480
style: ApplicationWindowStyle {
background: Item {}
}
Squircle { ... }
...
}
Then it works as expected.
Cheers,
Sean
--
Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK KDAB (UK) Ltd,
a KDAB Group company Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts
_______________________________________________
Interest mailing list
Interest at qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
More information about the Interest
mailing list