我在 qt4 IDE 中的 opengl 上创建了一个 gui。我创建了一个带有 opengl 窗口的小部件,在那里我能够显示 [b] 曲线 [/b]。在这里我使用 [b]paintGL()[/b] 并在其中调用我的绘图函数进行显示。但我的问题是,我在这里使用 [b] mousePressEvent(QMouseEvent *event)[/b] 来获取像素坐标,以便单击 opengl 窗口我可以在该特定单击位置生成曲线。但是运行程序后我发现初始绘制函数和生成的曲线。但点击窗口后无法更新,但在控制台应用程序中执行了所有计算,只有显示没有更新。
那么在这个窗口上点击鼠标后如何更新opengl窗口呢?
这是我的源代码:
GlWidget.cpp
//////Mouse Click Event for finding the pixel values//////
void GLWidget::mousePressEvent(QMouseEvent *event)
{
float window_width,window_height;
float ratio_x,ratio_y,cy;
click_x=event->x();
click_y=event->y();
// qDebug()<<"screen cx1==="<<cx1;
// qDebug()<<"screen cy1==="<<cy1;
window_width = 800;
window_height = 600;
ratio_x=30.0/window_width;
ratio_y=30.0/window_height;
cy=window_height-click_y;
click_x=click_x*ratio_x-10;
click_y=cy*ratio_y-10;
qDebug()<<"original_position_on_screen x==="<<click_x;
qDebug()<<"original_position_on_screen y==="<<click_y;
count=count+1;
qDebug()<<"count==="<<count;
func();
}
void GLWidget::func()
{
Draw_Curve(); //Drawing function
}
void GLWidget::Draw_Curve()
{
//Draw The Curve
}
void GLWidget:: paintGL() // paintGL() function
{
glClear(GL_COLOR_BUFFER_BIT);
Draw_Axes(); //Draw 3d coordinate axes
func(); //in this function we get the pixel coordinates everytime the mouse is clicked in the window
}