qt4 IDE で opengl の GUI を作成しています。opengl ウィンドウでウィジェットを作成したところ、[b]曲線[/b] を表示できるようになりました。ここで [b]paintGL()[/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
}