docs: def drawGrid(self, painter, rect, showGrid, showColumns, showRows):
          """
          Draws the grid on the inputed painter
          
          :param      painter     | <QPainter>
                      rect        | <QRect>
                      showGrid    | <bool>
                      showColumns | <bool>
                      showRows    | <bool>
          """
          if not (self.showGrid() and showGrid):
              return
          
          # saves the painter state before continuing
          painter.save()
          
          # draw the grid data
          painter.setBrush(self.alternateColor())
          painter.setPen(Qt.NoPen)
          
          # draw alternating rows
          if self.alternatingRowColors():
              painter.drawRects(self._buildData.get('grid_h_alt', []))
          
          # draw alternating columns
          if self.alternatingColumnColors():
              painter.drawRects(self._buildData.get('grid_v_alt', []))
          
          # draws the grid lines
          painter.setPen(QPen(self.axisColor()))
          grid = []
          if self.showRows() and showRows:
              grid += self._buildData.get('grid_h_lines', [])
          if self.showColumns() and showColumns:
              grid += self._buildData.get('grid_v_lines', [])
          
          if grid:
              painter.drawLines(grid)
          
          # restores the painter when finished
          painter.restore()