2 Stimmen

Transparentes QGLWidget über der QGraphicsView

Ich benutze QGraphicsView um ein 2D-Bild anzuzeigen und auch eine separate QGLWidget Fenster, um ein 3D-Objekt anzuzeigen. Ich ändere das in `QGraphicsView' angezeigte Bild dynamisch auf der Grundlage der Drehung des 3D-Objekts.

Ich möchte ein halbtransparentes 3D-Objekt über dem 2D-Bild rendern, so wie es Maya 2009 gemacht hat (man beachte den Würfel in der oberen rechten Ecke des Ansichtsfensters): Maya 2009 screenshot
(Quelle: <a href="http://www.boulevard-creation.com/images/2008/11/maya2009png.png" rel="nofollow noreferrer">boulevard-creation.com </a>)

Ist es möglich, dies mit meinen aktuellen Widgets zu tun? Wenn nicht, wie könnte es gemacht werden?

Eine Möglichkeit, die ich mir vorstellen kann, wäre, alles in QGLWidget und das 2D-Bild als Textur auf einer Hintergrundebene anzeigen, aber das scheint etwas mühsam zu sein.

2voto

Maciej Gryka Punkte 7921

Ich habe einen Weg gefunden, aber er ist ziemlich langsam: Sie können einfach eine weitere QGraphicsItem zum QGraphicsScene wie diese

scene->addPixmap(glWidget->renderPixmap());

Die Transparenz kann dann eingestellt werden mit QGraphicsItem::setOpacity() .

Es sollte einen schnelleren Weg geben mit QPixelBuffer aber ich habe es noch nicht geschafft, es richtig zu rendern.

1voto

Chris Punkte 1056

Setzen Sie den Viewport Ihrer qgraphicsview auf das qglwidget, dann können Sie in Ihrer paint-Methode direkt gl-Aufrufe verwenden, um Ihre 3D-Objekte zu zeichnen.

Ver http://doc.qt.io/archives/qt-4.7/qpainter.html#beginNativePainting

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X