3 #include <QApplication> 
    7 QStyledItemDelegate(parent)
 
   17   QStyleOptionViewItemV4 viewItemOption(option);
 
   19   if (index.column() == 0) 
 
   21     const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
 
   22     QRect newRect = QStyle::alignedRect(option.direction, Qt::AlignCenter,
 
   23     QSize(option.decorationSize.width() + 5,option.decorationSize.height()),
 
   24     QRect(option.rect.x() + textMargin, option.rect.y(),
 
   25     option.rect.width() - (2 * textMargin), option.rect.height()));
 
   26     viewItemOption.rect = newRect;
 
   29   QStyledItemDelegate::paint(painter, viewItemOption, index);
 
   36   Qt::ItemFlags flags = model->flags(index);
 
   37   if (!(flags & Qt::ItemIsUserCheckable) || !(flags & Qt::ItemIsEnabled))
 
   40   QVariant value = index.data(Qt::CheckStateRole);
 
   45   if (event->type() == QEvent::MouseButtonRelease) 
 
   47     const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
 
   48     QRect checkRect = QStyle::alignedRect(option.direction, Qt::AlignCenter,
 
   49     option.decorationSize,
 
   50     QRect(option.rect.x() + (2 * textMargin), option.rect.y(),
 
   51     option.rect.width() - (2 * textMargin),
 
   52     option.rect.height()));
 
   54     if (!checkRect.contains(static_cast<QMouseEvent*>(event)->pos()))
 
   57   else if (event->type() == QEvent::KeyPress) 
 
   59     if (static_cast<QKeyEvent*>(event)->key() != Qt::Key_Space&& 
static_cast<QKeyEvent*
>(event)->key() != Qt::Key_Select)
 
   67   Qt::CheckState state = (
static_cast<Qt::CheckState
>(value.toInt()) == Qt::Checked ? Qt::Unchecked : Qt::Checked);
 
   69   return model->setData(index, state, Qt::CheckStateRole);
 
Just use a delegate to render checkboxes centralized on a view.