Skip to content
qwt_legend.h 3.36 KiB
Newer Older
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
 *****************************************************************************/

#ifndef QWT_LEGEND_H
#define QWT_LEGEND_H

#include "qwt_global.h"
Bryant's avatar
Bryant committed
#include "qwt_abstract_legend.h"
#include <qvariant.h>
pixhawk's avatar
pixhawk committed

class QScrollBar;

/*!
  \brief The legend widget

  The QwtLegend widget is a tabular arrangement of legend items. Legend
  items might be any type of widget, but in general they will be
Bryant's avatar
Bryant committed
  a QwtLegendLabel.
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
  \sa QwtLegendLabel, QwtPlotItem, QwtPlot
pixhawk's avatar
pixhawk committed
*/

Bryant's avatar
Bryant committed
class QWT_EXPORT QwtLegend : public QwtAbstractLegend
pixhawk's avatar
pixhawk committed
{
    Q_OBJECT

public:
Bryant's avatar
Bryant committed
    explicit QwtLegend( QWidget *parent = NULL );
    virtual ~QwtLegend();
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setMaxColumns( uint numColums );
    uint maxColumns() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setDefaultItemMode( QwtLegendData::Mode );
    QwtLegendData::Mode defaultItemMode() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    QWidget *contentsWidget();
    const QWidget *contentsWidget() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    QWidget *legendWidget( const QVariant &  ) const;
    QList<QWidget *> legendWidgets( const QVariant & ) const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    QVariant itemInfo( const QWidget * ) const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    virtual bool eventFilter( QObject *, QEvent * );
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    virtual QSize sizeHint() const;
    virtual int heightForWidth( int w ) const;
Bryant's avatar
Bryant committed
    QScrollBar *horizontalScrollBar() const;
    QScrollBar *verticalScrollBar() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    virtual void renderLegend( QPainter *, 
        const QRectF &, bool fillBackground ) const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    virtual void renderItem( QPainter *, 
        const QWidget *, const QRectF &, bool fillBackground ) const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    virtual bool isEmpty() const;
    virtual int scrollExtent( Qt::Orientation ) const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
Q_SIGNALS:
    /*!
      A signal which is emitted when the user has clicked on
      a legend label, which is in QwtLegendData::Clickable mode.
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
      \param itemInfo Info for the item item of the
                      selected legend item
      \param index Index of the legend label in the list of widgets
                   that are associated with the plot item
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
      \note clicks are disabled as default
      \sa setDefaultItemMode(), defaultItemMode(), QwtPlot::itemToInfo()
     */
    void clicked( const QVariant &itemInfo, int index );
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    /*!
      A signal which is emitted when the user has clicked on
      a legend label, which is in QwtLegendData::Checkable mode
Bryant's avatar
Bryant committed
      \param itemInfo Info for the item of the
                      selected legend label
      \param index Index of the legend label in the list of widgets
                   that are associated with the plot item
      \param on True when the legend label is checked
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
      \note clicks are disabled as default
      \sa setDefaultItemMode(), defaultItemMode(), QwtPlot::itemToInfo()
     */
    void checked( const QVariant &itemInfo, bool on, int index );
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
public Q_SLOTS:
    virtual void updateLegend( const QVariant &,
        const QList<QwtLegendData> & );
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
protected Q_SLOTS:
    void itemClicked();
    void itemChecked( bool );
pixhawk's avatar
pixhawk committed

protected:
Bryant's avatar
Bryant committed
    virtual QWidget *createWidget( const QwtLegendData & ) const;
    virtual void updateWidget( QWidget *widget, const QwtLegendData &data );
pixhawk's avatar
pixhawk committed

private:
Bryant's avatar
Bryant committed
    void updateTabOrder();

pixhawk's avatar
pixhawk committed
    class PrivateData;
    PrivateData *d_data;
};

Bryant's avatar
Bryant committed
#endif