@@ -38,6 +38,8 @@ class HistogramItem: public QwtPlotItem
38
38
virtual void draw (QPainter *, const QwtScaleMap &xMap,
39
39
const QwtScaleMap &yMap, const QRect &) const ;
40
40
41
+ virtual void updateLegend (QwtLegend *) const ;
42
+
41
43
void setBaseline (double reference);
42
44
double baseline () const ;
43
45
@@ -67,6 +69,7 @@ class HistogramItem: public QwtPlotItem
67
69
#include < qwt_interval_data.h>
68
70
#include < qwt_painter.h>
69
71
#include < qwt_scale_map.h>
72
+ #include < qwt_legend_item.h>
70
73
71
74
class HistogramItem ::PrivateData
72
75
{
@@ -344,4 +347,63 @@ void HistogramItem::drawBar(QPainter *painter,
344
347
painter->restore ();
345
348
}
346
349
350
+ // ! Update the widget that represents the curve on the legend
351
+ // this was adapted from QwtPlotCurve::updateLegend()
352
+ void HistogramItem::updateLegend (QwtLegend *legend) const
353
+ {
354
+ if ( !legend )
355
+ return ;
356
+
357
+ QwtPlotItem::updateLegend (legend);
358
+
359
+ QWidget *widget = legend->find (this );
360
+ if ( !widget || !widget->inherits (" QwtLegendItem" ) )
361
+ return ;
362
+
363
+ QwtLegendItem *legendItem = (QwtLegendItem *)widget;
364
+
365
+ #if QT_VERSION < 0x040000
366
+ const bool doUpdate = legendItem->isUpdatesEnabled ();
367
+ #else
368
+ const bool doUpdate = legendItem->updatesEnabled ();
369
+ #endif
370
+ legendItem->setUpdatesEnabled (false );
371
+
372
+ const int policy = legend->displayPolicy ();
373
+
374
+ if (policy == QwtLegend::FixedIdentifier)
375
+ {
376
+ int mode = legend->identifierMode ();
377
+
378
+ legendItem->setCurvePen (QPen (color ()));
379
+
380
+ if (mode & QwtLegendItem::ShowText)
381
+ legendItem->setText (title ());
382
+ else
383
+ legendItem->setText (QwtText ());
384
+
385
+ legendItem->setIdentifierMode (mode);
386
+ }
387
+ else if (policy == QwtLegend::AutoIdentifier)
388
+ {
389
+ int mode = 0 ;
390
+
391
+ legendItem->setCurvePen (QPen (color ()));
392
+ mode |= QwtLegendItem::ShowLine;
393
+ if ( !title ().isEmpty () )
394
+ {
395
+ legendItem->setText (title ());
396
+ mode |= QwtLegendItem::ShowText;
397
+ }
398
+ else
399
+ {
400
+ legendItem->setText (QwtText ());
401
+ }
402
+ legendItem->setIdentifierMode (mode);
403
+ }
404
+
405
+ legendItem->setUpdatesEnabled (doUpdate);
406
+ legendItem->update ();
407
+ }
408
+
347
409
#endif
0 commit comments