-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqgraphicskeyitem.h
70 lines (59 loc) · 2.18 KB
/
qgraphicskeyitem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
* <one line to give the program's name and a brief idea of what it does.>
* Copyright (C) 2016 Arek <arek@ag.de1.cc>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef QGRAPHICSKEYITEM_H
#define QGRAPHICSKEYITEM_H
#include <QGraphicsPolygonItem>
#include <QBrush>
#include "keyitemmodel.h"
#include "global.h"
class KeyItemModel;
class KeyItem;
class QGraphicsKeyItem : public QGraphicsPolygonItem
{
public:
enum { Type = UserType + 1 };
QGraphicsKeyItem(QGraphicsItem* parent = Q_NULLPTR);
//virtual ~QGraphicsKeyItem();
QGraphicsKeyItem(const QPolygonF& polygon, QGraphicsItem* parent = Q_NULLPTR);
QGraphicsKeyItem(const QRectF& polygon, QGraphicsItem* parent = Q_NULLPTR);
QGraphicsKeyItem(qreal diameter, QGraphicsItem* parent = Q_NULLPTR);
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
void setKey(KeyItem * key);
virtual int type() const {return Type; };
int getPartIndex(QPointF pos);
void setStyle(QString style, int index = 0);
void updateContent();
KeyItem *getKey() {return key;};
QRectF placementRect();
protected:
void commonInit();
void paintText(QString text, QPolygonF polygon, int index = 0);
QPolygonF upperPolygon, lowerPolygon;
QLineF middleLine;
QBrush upperBrush, lowerBrush;
QGraphicsTextItem *textItems[2];
KeyItem *key = nullptr;
QModelIndex data;
static QPen middlePen;
static bool globalSetupMade;
const double penWidth = SIZEFACTOR / 2.0;
const QMarginsF margins = QMarginsF(penWidth/2.0, penWidth/2.0,
penWidth/2.0, penWidth/2.0);
};
#endif // QGRAPHICSKEYITEM_H