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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
* Qwt Widget Library
* Copyright (C) 1997 Josef Wilgen
* Copyright (C) 2002 Uwe Rathmann
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the Qwt License, Version 1.0
*****************************************************************************/
// vim: expandtab
#ifndef QWT_LEGEND_ITEM_H
#define QWT_LEGEND_ITEM_H
#include "qwt_global.h"
#include "qwt_legend.h"
#include "qwt_text.h"
#include "qwt_text_label.h"
class QPainter;
class QPen;
class QwtSymbol;
/*!
\brief A legend label
QwtLegendItem represents a curve on a legend.
It displays an curve identifier with an explaining text.
The identifier might be a combination of curve symbol and line.
In readonly mode it behaves like a label, otherwise like
an unstylish push button.
\sa QwtLegend, QwtPlotCurve
*/
class QWT_EXPORT QwtLegendItem: public QwtTextLabel
{
Q_OBJECT
public:
/*!
\brief Identifier mode
Default is ShowLine | ShowText
\sa QwtLegendItem::identifierMode, QwtLegendItem::setIdentifierMode
*/
enum IdentifierMode {
NoIdentifier = 0,
ShowLine = 1,
ShowSymbol = 2,
ShowText = 4
};
explicit QwtLegendItem(QWidget *parent = 0);
explicit QwtLegendItem(const QwtSymbol &, const QPen &,
const QwtText &, QWidget *parent = 0);
virtual ~QwtLegendItem();
virtual void setText(const QwtText &);
void setItemMode(QwtLegend::LegendItemMode);
QwtLegend::LegendItemMode itemMode() const;
void setIdentifierMode(int);
int identifierMode() const;
void setIdentfierWidth(int width);
int identifierWidth() const;
void setSpacing(int spacing);
int spacing() const;
void setSymbol(const QwtSymbol &);
const QwtSymbol& symbol() const;
void setCurvePen(const QPen &);
const QPen& curvePen() const;
virtual void drawIdentifier(QPainter *, const QRect &) const;
virtual void drawItem(QPainter *p, const QRect &) const;
virtual QSize sizeHint() const;
bool isChecked() const;
public slots:
void setChecked(bool on);
signals:
//! Signal, when the legend item has been clicked
void clicked();
//! Signal, when the legend item has been pressed
void pressed();
//! Signal, when the legend item has been relased
void released();
//! Signal, when the legend item has been toggled
void checked(bool);
protected:
void setDown(bool);
bool isDown() const;
virtual void paintEvent(QPaintEvent *);
virtual void mousePressEvent(QMouseEvent *);
virtual void mouseReleaseEvent(QMouseEvent *);
virtual void keyPressEvent(QKeyEvent *);
virtual void keyReleaseEvent(QKeyEvent *);
virtual void drawText(QPainter *, const QRect &);
private:
void init(const QwtText &);
class PrivateData;
PrivateData *d_data;
};
#endif // QWT_LEGEND_ITEM_H