annotate ui/separatoritemdelegate.cpp @ 701:31c3d2bc9880

(Issue22) Fix painting problems with fixed size in windows style. We now use fusion style also on Windows for the combobox to let it be shown in the same way as we do on GNU/Linux.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 02 Jul 2014 11:26:42 +0200
parents 17e1c8f37d72
children
rev   line source
404
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
2 * Software engineering by Intevation GmbH
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
3 *
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
6 * See LICENSE.txt for details.
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 273
diff changeset
7 */
273
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 #include <QtWidgets>
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 #include "separatoritemdelegate.h"
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 void SeparatorItemDelegate::paint(QPainter *painter,
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 const QStyleOptionViewItem &option, const QModelIndex &index) const
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 {
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 // Save the current painter.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 painter->save();
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 // Get the position for separator line.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19 int topLeftY = option.rect.topLeft().y();
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 int height = option.rect.height();
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 int middle = topLeftY + (height / 2);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 // Draw the first part.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 QPen linePen(Qt::black, 2, Qt::SolidLine);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 painter->setPen(linePen);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 painter->drawLine(10, middle, 80, middle);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 // Draw the text.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 QString text = index.data().toString();
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 QRect rect = option.rect.adjusted(85, -2, 0, -2);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 painter->drawText(rect.left(), rect.top(), rect.width(), rect.height(),
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 Qt::AlignVCenter|Qt::AlignLeft, text, &rect);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 // Draw the second part.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 painter->drawLine(rect.topRight().x() + 5, middle, rect.topRight().x() + 75, middle);
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 // Restore the painter to have an unmodified painter for the next draw
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 // action.
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 painter->restore();
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 return;
b6c2fa8457b6 Added new list item delegate for drawing a separator.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 }

http://wald.intevation.org/projects/trustbridge/