code: def paint(self, painter, option, index):
          
          if self._widget is None:
              return super(WidgetDelegate, self).paint(painter, option, index)
  
          self.set_widget_index(index)
          painter.save()
          painter.translate(option.rect.topLeft())
          self._widget.resize(option.rect.size())
          self._widget.render(painter, QtCore.QPoint())
          painter.restore()
docs: Use the painter and style option to render the item specified by the item index.
  
          :param painter: the painter to paint
          :type painter: :class:`QtGui.QPainter`
          :param option: the options for painting
          :type option: :class:`QtGui.QStyleOptionViewItem`
          :param index: the index to paint
          :type index: :class:`QtCore.QModelIndex`
          :returns: None
          :rtype: None
          :raises: None