Seite 1 von 1
das 1. Mal mit QOpenGL und Fehler
Verfasst: 2. Februar 2007 09:19
von Funki
Hallo,
kann mir jemand mal helfen?
Wenn ich versuch ein GlFenster anzulegen mit glWidg = new GLFenster( 0 ); , wobei das GLFenster von QGlWidget abgeleitet ist, springt der Debugger raus und es kommt folgende Fehlermeldung in einem Konsolenfenster:
QApplication::palette() failed: please instantiate the QApplication object first. ... QWidget: Must construct a QApplication before a QPaintDevice
Bibliotheken, Include-Pfade, Header, etc. sind eingebunden.
$(QTDIR)\include\QtOpenGL
OpenGL32.lib
GLu32.lib
$(QTDIR)\lib
#include<qgl.h>
Weiss nicht was noch sein kann.
Bitte um Hilfe?
Verfasst: 2. Februar 2007 09:35
von Volker
Wie die Fehlermeldung schon sagt,... hast Du ein QApplication Objekt angelegt?
Also z.B.
Code: Alles auswählen
int main(int argc, char** argv)
{
QApplication app( argc, argv );
// create a new instance of GLFenster
GLFenster* mainWindow = new GLFenster();
mainWindow->show();
// Enters the main event loop and waits until exit() is called
// or the main widget is destroyed, and Returns the value that
// was set via to exit() (which is 0 if exit() is called via quit()).
return app.exec();
}
Verfasst: 2. Februar 2007 09:58
von Funki
Genauso stehts da(sorry hab ich vergessen zu sagen),
und bei der Zeile GLFenster* mainWindow = new GLFenster(); fliegt er raus.
Verfasst: 2. Februar 2007 10:32
von Christian81
Funki hat geschrieben:Genauso stehts da(sorry hab ich vergessen zu sagen)
Glaub ich nicht, da folgender Code bei mir keine Fehlermeldung ausgibt:
Code: Alles auswählen
int main(int argc, char** argv)
{
QApplication app( argc, argv );
QGLWidget* mainWindow = new QGLWidget();
mainWindow->show();
return app.exec();
}
Wie versuchst du zu zeichnen? Doch hoffentlich nicht im ctor von Deinem GLFenster...
Verfasst: 2. Februar 2007 11:42
von Funki
... in der initializeGL() über ne extra Funktion.
Ich hab dein Code mal übernommen, aber wie gesagt, kommt immer die selbe Fehlermeldung im Konsolenfenster:
QApplication::palette() failed: please instantiate the QApplication object first. QWidget: Must construct a QApplication before a QPaintDevice
Der Debugger springt gar nicht erst in die main()!
Verfasst: 2. Februar 2007 11:49
von Christian81
Er ist noch nicht in der main() - Funktion?
Kann es sein dass Du irgendwo ein globales Objekt anlegst welches etwas graphisches machen möchte? Sieht mir fast so aus...
Hast du u.U. die Qt-Debug libs? Dann könnte man einen Breakpoint auf die Fehlermeldung machen und per Backtrace schauen von wo aus die betreffende Funktion aufgerufen wird. Aber so wie es aussieht ist es irgend ein globales Objekt.
Verfasst: 2. Februar 2007 12:54
von Funki
Ich hatte anstatt der QtOpenGLd4.lib beide, QtOpenGL4.lib und QtOpenGL4d.lib, eingebunden, jetzt gehts.
da wär ich nie darauf gekommen.
Danke für die Mühe,
Funki
Verfasst: 2. Februar 2007 12:55
von Christian81
Funki hat geschrieben:Ich hatte anstatt der QtOpenGLd4.lib beide, QtOpenGL4.lib und QtOpenGL4d.lib, eingebunden, jetzt gehts.
Ein Makefilegenerator a'la qmake oder cmake verhindert solche Probleme.