Einfach gesagt, ich kann nicht für das Leben von mir herauszufinden, wie man tatsächlich Dinge wie QOpenGLWidget
oder QOpenGLWindow
oder irgendetwas verwenden. Ich möchte das Rendering Ich bin ein Kind Widget eines Fensters in einem MDI, aber nichts funktioniert.Wie verwende ich OpenGL in Qt 5?
Hier ist der Code, den ich zur Zeit für das Widget eingerichtet haben (zumindest nur die Teile beteiligt OpenGL):
Viewport::Viewport(QWidget * parent) : QOpenGLWidget(parent) { }
void Viewport::initializeGL() {
initializeOpenGLFunctions();
}
void Viewport::paintGL() {
// first, clear the screen
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
}
Und hier ist, wie ich das Widget verwenden:
vp = new Viewport;
vp->resize(QSize(320,240));
hbox->addWidget(vp);
Und die Ergebnis ist, dass ich nichts sehe. Ich sehe nur einen winzigen Streifen leeren Platz neben dem anderen Widget im Fenster, aber das ist es. Kein schwarzer Bildschirm wie ich versuche, zu löschen, nicht einmal eine leere Fläche von 320x240.
Wie ich schon sagte, ich war nicht in der Lage, dies auf irgendeine Weise zu tun, die ich finden konnte, und es ist wirklich frustrierend. Fehle ich etwas Offensichtliches? Es gibt sehr wenig Dokumentation, so wie es ist, also ist es schwer zu sagen, ob ich es bin oder ob es einen seltsamen Fall gibt, in den ich hineingerate. (Zum Beispiel verwendet keine der von mir gefundenen Dokumentationen QOpenGLWidget
als Teil eines größeren Widgets; das ist, weil es nicht sein kann, oder weil alle Beispiele, die ich finden kann, nur faul sind, das Widget als eigenes Top- zu verwenden- Level-Fenster?)
it :) –
nächstes Mal offensichtlich sein wird, ich weiß, das ist ziemlich alt, aber FWIW, Sie können Probleme wie diese vermeiden, wenn Sie die Widgets im Designer platzieren, anstatt sie im laufenden Betrieb zu erstellen, damit Sie sehen können, was Sie tun. Der Weg, um dies mit benutzerdefinierten Widgets (wie 'QOpenGLWidget'-abgeleitete, die von' QWidget' abgeleitet sind) zu tun ist, einen Platzhalter 'QWidget' in Ihrem Designer wie gewohnt zu platzieren, dann mit der rechten Maustaste darauf klicken und" Befördert zu...". Dann legen Sie es dort auf Ihre neue benutzerdefinierte Widget-Klasse, und es wird alles magisch funktionieren. Schauen Sie sich http://doc.qt.io/qt-5/designer-using-custom-widgets.html an. –