Seite 1 von 1

Problem mit QGLWidget

Verfasst: 28. November 2007 16:30
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

Verfasst: 29. November 2007 07:14
von macman
Gezeichnet wird in paintGL, immer und immer wieder. Deine Zeichenroutine gehört also da rein und nirgendwo anders.