Problem mit QGLWidget
Verfasst: 28. November 2007 16:30
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:
In den slot komme ich auch, aber sehen tue ich nichts.
Lg NoRulez
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;
}
Lg NoRulez