  
    QString id;
    QString sig_name;
    ChartView *chart_view = nullptr;
    LineMarker *line_marker = nullptr;
    QList<QPointF> vals;
  };
  
  class ChartsWidget : public QWidget {
    Q_OBJECT
  
 
</s> remove private:
  void updateState();
  void addData(const CanData &can_data, const Signal &sig);
  void updateSeries();
  void rangeChanged(qreal min, qreal max);
  void updateAxisY();

 </s> add protected: </s> remove public:
  ChartView(QChart *chart, QWidget *parent = nullptr) : QChartView(chart, parent) {}
  void mouseReleaseEvent(QMouseEvent *event) override;
 </s> add   QGraphicsLineItem *track_line;
  QGraphicsSimpleTextItem *value_text;
  QGraphicsLineItem *line_marker;
  QList<QPointF> vals;
  QString id;
  QString sig_name; </s> remove   LineMarker(QWidget *parent) : QWidget(parent) {}
  void setX(double x);
 </s> add   ChartView(const QString &id, const QString &sig_name, QWidget *parent = nullptr); </s> remove class LineMarker : public QWidget {
Q_OBJECT
 </s> add class ChartView : public QChartView {
  Q_OBJECT </s> remove class ChartView : public QChartView {
  Q_OBJECT
 </s> add   void updateSeries();
  void rangeChanged(qreal min, qreal max);
  void updateAxisY();
  void updateState();
  
    QString id;
    QString sig_name;
    ChartView *chart_view = nullptr;


  };
  
  class ChartsWidget : public QWidget {
    Q_OBJECT
  
keep keep keep keep replace replace keep keep keep keep keep
 Cabana: display the (x,y) values while MouseMove on the chart (#26064) 
tools/cabana/chartswidget.h