Mercurial > trustbridge
diff ui/separatoritemdelegate.cpp @ 273:b6c2fa8457b6
Added new list item delegate for drawing a separator.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 02 Apr 2014 13:38:10 +0200 |
parents | |
children | 17e1c8f37d72 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/separatoritemdelegate.cpp Wed Apr 02 13:38:10 2014 +0200 @@ -0,0 +1,34 @@ +#include <QtWidgets> + +#include "separatoritemdelegate.h" + +void SeparatorItemDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + // Save the current painter. + painter->save(); + + // Get the position for separator line. + int topLeftY = option.rect.topLeft().y(); + int height = option.rect.height(); + int middle = topLeftY + (height / 2); + + // Draw the first part. + QPen linePen(Qt::black, 2, Qt::SolidLine); + painter->setPen(linePen); + painter->drawLine(10, middle, 80, middle); + + // Draw the text. + QString text = index.data().toString(); + QRect rect = option.rect.adjusted(85, -2, 0, -2); + painter->drawText(rect.left(), rect.top(), rect.width(), rect.height(), + Qt::AlignVCenter|Qt::AlignLeft, text, &rect); + + // Draw the second part. + painter->drawLine(rect.topRight().x() + 5, middle, rect.topRight().x() + 75, middle); + + // Restore the painter to have an unmodified painter for the next draw + // action. + painter->restore(); + return; +}