Read about working of OpenGL Vertex Buffers and usage of some new functions like glPushMatrix and glPopMatrix and implemented the conversion of the device to user coordinates and vice versa.
Got stuck with the rendering of the new painter due to some issues with the pointers but was finally able to resolve them with the help of my mentors. Also used QOpenGLWidget in place of QWidget for the rendering and read its documentation.
Add new functions to the new painter such as creating lines, rectangles, etc using Vertex buffer objects. Also added many similar functions like clear, fill color with arguments as RGB codes.
Learned few things about QOpenGLWidget and replaced it with QWidget at few places in order to create an OpenGL window. Removed the previous function to create painter and added files for new painter and make use of its members to create a window.
Removing the part of the grid that was earlier rendered through Cairo but now it is done with the new painter. Now the grid will be rendered using the new painter and rest all things are same. Changes made are mostly in grid.cpp file and the functions related to the previous painter is removed.
Completing the task of the grid for the new painter. The grid is rendered through OpenGL and lines are formed using ‘vertex buffer objects’ and then glDrawArrays(GL_LINES, 0, 2) will draw them on the painter.