##// END OF EJS Templates
Adaptive layout to legend. Tries to fit all items inside given maximum size
Adaptive layout to legend. Tries to fit all items inside given maximum size

File last commit:

r626:b05202e4f2ef
r626:b05202e4f2ef
Show More
legendmarker_p.h
75 lines | 1.8 KiB | text/x-c | CLexer
#ifndef LEGENDMARKER_P_H
#define LEGENDMARKER_P_H
#include "qchartglobal.h"
#include <QGraphicsObject>
#include <QBrush>
#include <QGraphicsSimpleTextItem>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QSeries;
class QBarSet;
class QPieSlice;
// TODO: split this to 3 different markers for series, barset and pieslice. Current implementation is easier to misuse...
class LegendMarker : public QGraphicsObject
{
Q_OBJECT
enum LegendMarkerType {
LegendMarkerTypeSeries,
LegendMarkerTypeBarset,
LegendMarkerTypePieslice
};
public:
LegendMarker(QSeries* series, QGraphicsItem *parent = 0);
LegendMarker(QSeries* series, QBarSet* barset, QGraphicsItem *parent = 0);
LegendMarker(QSeries* series, QPieSlice* pieslice, QGraphicsItem *parent = 0);
void setPos(qreal x, qreal y);
void setBrush(const QBrush brush);
QBrush brush() const;
void setName(const QString name);
QString name() const;
QSeries* series() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
QRectF boundingRect() const;
void layoutChanged();
public:
// From QGraphicsObject
void mousePressEvent(QGraphicsSceneMouseEvent *event);
Q_SIGNALS:
void clicked(QSeries* series, Qt::MouseButton button);
void clicked(QBarSet* barset, Qt::MouseButton button);
void clicked(QPieSlice* pieslice, Qt::MouseButton button);
public Q_SLOTS:
void changed();
private:
QPointF mPos;
QSize mSize;
QRectF mBoundingRect;
QRectF mMarkerBoundingRect;
QBrush mBrush;
QSeries* mSeries;
QBarSet* mBarset;
QPieSlice* mPieslice;
LegendMarkerType mType;
QGraphicsSimpleTextItem mTextItem;
};
QTCOMMERCIALCHART_END_NAMESPACE
#endif // LEGENDMARKER_P_H