Problem mit QGLWidget

Alles rund um die Programmierung mit Qt
Antworten
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Problem mit QGLWidget

Beitrag von NoRulez »

Hey @all,

und zwar habe ich vor, das wenn ich auf einen QPushbutton clicke, in die mitte eine GLWidgets ein (beispiel: Rechteck) gezeichnet wird. das ich dann mittels der maus auf dem GLWidget verschieben kann.

Ich habe mir auch schon die Beispiele von QT angesehen, ich komme aber leider nicht weiter :(.

Habe erst vor kurzem angefangen mit OpenGL unter QT.

Das komische ist wenn ich das ganze in die initializeGL methode zeichen, sehe ich es auch, nur nicht wenn ich nachträglich ein objekt zeichnen möchte.

hier mal ein bisschen code:

Code: Alles auswählen

 void GLWidget::initializeGL() {
	static const GLfloat lightPos[4] = { 5.0f, 5.0f, 10.0f, 1.0f };
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_TEXTURE_2D);
	glEnable( GL_DEPTH_TEST );
	glEnable(GL_COLOR_MATERIAL);
	glClearDepth(1.0f);
	glDepthFunc(GL_LEQUAL);
	glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 
	glEnable(GL_NORMALIZE);
	gear1 = drawRect(0.0, 0.0, 0.0, 5.0, 3.0, 0.4, 0.4, 0.4);
	gear2 = drawRect(2.0, 0.0, 0.0, 5.0, 3.0, 0.4, 0.4, 0.5);
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}

 void GLWidget::addRect() { // public slot
	 rect = addRect(0.0, 0.0, 0.0, 5.0, 1.0, 0.9, 0.4, 0.4));
	 updateGL();
 }

 GLuint GLWidget::drawHost(GLdouble x, GLdouble y, GLdouble z, GLdouble width, GLdouble height,
						   GLdouble color_r, GLdouble color_g, GLdouble color_b) {
	GLuint list = glGenLists(1);
	glNewList(list, GL_COMPILE);

	GLdouble x_half_size = width/2;
	GLdouble y_half_size = height/2;
	GLdouble x_coord_min = x - x_half_size;
	GLdouble x_coord_max = x + x_half_size;
	GLdouble y_coord_min = y - y_half_size;
	GLdouble y_coord_max = y + y_half_size;

	glBegin(GL_QUADS);		
		glColor3f(color_r, color_g, color_b);
		glVertex3f(x + x_coord_min, y + y_coord_max, z);		// Left upper corner
		glVertex3f(x + x_coord_max, y + y_coord_max, z);		// Right upper corner
		glVertex3f(x + x_coord_max, y + y_coord_min, z);		// Right lower corner
		glVertex3f(x + x_coord_min, y + y_coord_min, z);		// Left lower corner
	glEnd(); 
	glEndList();
	return list;
}
In den slot komme ich auch, aber sehen tue ich nichts.

Lg NoRulez
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Gezeichnet wird in paintGL, immer und immer wieder. Deine Zeichenroutine gehört also da rein und nirgendwo anders.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten