das 1. Mal mit QOpenGL und Fehler

Alles rund um die Programmierung mit Qt
Antworten
Funki
Beiträge: 4
Registriert: 1. Februar 2007 16:33
Wohnort: Chemnitz

das 1. Mal mit QOpenGL und Fehler

Beitrag 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?
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag 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();
}
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Funki
Beiträge: 4
Registriert: 1. Februar 2007 16:33
Wohnort: Chemnitz

Beitrag von Funki »

Genauso stehts da(sorry hab ich vergessen zu sagen),
und bei der Zeile GLFenster* mainWindow = new GLFenster(); fliegt er raus.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Funki
Beiträge: 4
Registriert: 1. Februar 2007 16:33
Wohnort: Chemnitz

Beitrag 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()!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Funki
Beiträge: 4
Registriert: 1. Februar 2007 16:33
Wohnort: Chemnitz

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten