单击时添加矩形

时间:2014-06-01 01:08:30

标签: c++ qt opengl mouse

我决定在Qt中使用OpenGL作为我的项目而且我被卡住了。 我想在我点击的地方添加一个矩形。 这是我使用的代码:

void GLWidget::initializeGL()
{
    glClearColor(0.2,0.2,0.2,1);
    glDisable(GL_DEPTH_TEST);
    glViewport(0,0,w1,h1);
}

void GLWidget::paintGL()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-10.0, 10.0, -10.0, 10.0, -1, 1);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT);
}

void GLWidget::mousePressEvent(QMouseEvent *e)
{
    float x,y;
    x = -10+((e->x()+1)/w1*20);
    y = 10-((e->x()+1)/h1*20);
    qDebug()<<"Position x ="<<x;
    qDebug()<<"Position y ="<<y;
    glColor3f(1,0,0);
    glRectf(x,y,x+1,y+1);
}

void GLWidget::mouseReleaseEvent(QMouseEvent *)
{
    updateGL();
}

我读到我必须更改glOrtho和glViewport以将屏幕坐标更改为OpenGL坐标,我尝试这样做,但它不起作用。 ; / 在我的项目中,w1和h1是静态const int,我的窗口有固定的大小。

1 个答案:

答案 0 :(得分:0)

使用paintEvent而不是paintGL,并使用QPainter在3d上绘制一个矩形。看看Overpainting示例。