00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#ifndef QWT_LEGEND_H
00013
#define QWT_LEGEND_H
00014
00015
#include <qpen.h>
00016
#include <qscrollview.h>
00017
#include <qlabel.h>
00018
#include "qwt_global.h"
00019
#include "qwt_symbol.h"
00020
#include "qwt_push_button.h"
00021
00022
#if QT_VERSION < 0x040000
00023
#include <qwidgetintdict.h>
00024
#else
00025
#include "qwt_plot_dict.h"
00026
class QWT_EXPORT QWidgetIntDict:
public QwtSeqDict<QWidget>
00027 {
00028
public:
00029 QWidgetIntDict() {}
00030 };
00031
typedef QIntDictIterator<QWidget> QWidgetIntDictIt;
00032
#endif
00033
00034
class QPainter;
00035
class QwtText;
00036
00041 class QwtLegendItem
00042 {
00043
public:
00051 enum IdentifierMode
00052 {
00053 NoIdentifier = 0,
00054 ShowLine = 1,
00055 ShowSymbol = 2,
00056 ShowText = 4
00057 };
00058
00059
QwtLegendItem();
00060
QwtLegendItem(
const QwtSymbol &,
const QPen &);
00061
00062
virtual ~QwtLegendItem();
00063
00064
void setIdentifierMode(
int);
00065
int identifierMode() const;
00066
00067
void setSymbol(const
QwtSymbol &);
00068 const QwtSymbol& symbol() const;
00069
00070
void setCurvePen(const QPen &);
00071 const QPen& curvePen() const;
00072
00073 virtual
void drawIdentifier(QPainter *, const QRect &) const;
00074 virtual
void drawItem(QPainter *p, const QRect &) const;
00075
00076 virtual
void setTitle(const QString &) = 0;
00077 virtual QString title() const = 0;
00078
00079 protected:
00080 virtual
QwtText *titleText() const = 0;
00081 virtual
void updateItem();
00082
00083 private:
00084
int d_identifierMode;
00085 QwtSymbol d_symbol;
00086 QPen d_curvePen;
00087 };
00088
00099 class QWT_EXPORT
QwtLegendButton: public
QwtPushButton, public
QwtLegendItem
00100 {
00101 Q_OBJECT
00102
public:
00103
QwtLegendButton(QWidget *parent = 0,
const char *name = 0);
00104
QwtLegendButton(
const QwtSymbol &,
const QPen &,
00105
const QString &, QWidget *parent = 0,
const char *name = 0);
00106
00107
virtual void setTitle(
const QString &);
00108
virtual QString title()
const;
00109
00110
protected:
00111
virtual QwtText *titleText()
const;
00112
virtual void updateItem();
00113
virtual void updateIconset();
00114
00115
private:
00116
void init();
00117 };
00118
00128 class QWT_EXPORT QwtLegendLabel:
public QLabel,
public QwtLegendItem
00129 {
00130 Q_OBJECT
00131
public:
00132 QwtLegendLabel(QWidget *parent = 0,
const char *name = 0);
00133 QwtLegendLabel(
const QwtSymbol &,
const QPen &,
00134
const QString &, QWidget *parent = 0,
const char *name = 0);
00135
00136
virtual void setTitle(
const QString &);
00137
virtual QString title()
const;
00138
00139
protected:
00140
virtual QwtText *titleText()
const;
00141
virtual void drawContents(QPainter *);
00142
virtual void updateItem();
00143
00144
private:
00145
void init();
00146 };
00147
00158 class QWT_EXPORT QwtLegend :
public QScrollView
00159 {
00160 Q_OBJECT
00161
00162 Q_PROPERTY(
bool readOnly READ isReadOnly WRITE setReadOnly )
00163
00164
public:
00165
00187 enum LegendDisplayPolicy
00188 {
00189 None = 0,
00190 Fixed = 1,
00191 Auto = 2
00192 };
00193
00194 QwtLegend(QWidget *parent = 0,
const char *name = 0);
00195
00196
void setReadOnly(
bool readOnly);
00197
bool isReadOnly() const;
00198
00199
void setDisplayPolicy(LegendDisplayPolicy policy,
int mode = -1);
00200 LegendDisplayPolicy displayPolicy() const;
00201
00202
int identifierMode() const;
00203
00204 QWidget *contentsWidget();
00205 const QWidget *contentsWidget() const;
00206
00207
void insertItem(QWidget *,
long key);
00208 QWidget *findItem(
long key);
00209 const QWidget *findItem(
long key) const;
00210 QWidget *takeItem(
long key);
00211
00212 virtual QWidgetIntDictIt itemIterator() const;
00213
00214
long key(const QWidget *) const;
00215
00216
void clear();
00217
00218
bool isEmpty() const;
00219 uint itemCount() const;
00220
00221 virtual
bool eventFilter(QObject *, QEvent *);
00222
00223 virtual QSize sizeHint() const;
00224 virtual
int heightForWidth(
int w) const;
00225
00226 protected:
00227 virtual
void viewportResizeEvent(QResizeEvent *);
00228 virtual
void layoutContents();
00229
00230 private:
00231
bool d_readOnly;
00232 LegendDisplayPolicy d_displayPolicy;
00233
int d_identifierMode;
00234 QWidgetIntDict d_items;
00235 QWidget *d_contentsWidget;
00236 };
00237
00239 inline
bool QwtLegend::isEmpty()
const
00240
{
00241
return d_items.count() == 0;
00242 }
00243
00245 inline uint
QwtLegend::itemCount()
const
00246
{
00247
return d_items.count();
00248 }
00249
00250
#endif // QWT_LEGEND_H