Skip to content
Snippets Groups Projects
qwt_legend_item.h 2.94 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    /* -*- 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
    
    pixhawk's avatar
    pixhawk committed
      an unstylish push button.
    
      \sa QwtLegend, QwtPlotCurve
    */
    class QWT_EXPORT QwtLegendItem: public QwtTextLabel
    {
        Q_OBJECT
    public:
    
    pixhawk's avatar
    pixhawk committed
        /*!
           \brief Identifier mode
    
           Default is ShowLine | ShowText
           \sa QwtLegendItem::identifierMode, QwtLegendItem::setIdentifierMode
         */
    
    
        enum IdentifierMode {
    
    pixhawk's avatar
    pixhawk committed
            NoIdentifier = 0,
            ShowLine = 1,
            ShowSymbol = 2,
            ShowText = 4
        };
    
        explicit QwtLegendItem(QWidget *parent = 0);
        explicit QwtLegendItem(const QwtSymbol &, const QPen &,
    
                               const QwtText &, QWidget *parent = 0);
    
    pixhawk's avatar
    pixhawk committed
        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;
    
    pixhawk's avatar
    pixhawk committed
    
        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