      QPalette pal;
      pal.setBrush(QPalette::Base, QColor(0, 0, 0, 80));
      rubber->setPalette(pal);
    }
    chart_layout->addWidget(chart_view);
    chart_layout->addStretch();
  
    stacked->addWidget(chart_widget);
    line_marker = new LineMarker(this);
    stacked->addWidget(line_marker);
    line_marker->setAttribute(Qt::WA_TransparentForMouseEvents, true);
 
</s> remove   chart_view = new ChartView(chart);
  chart_view->setFixedHeight(300);
  chart_view->setRenderHint(QPainter::Antialiasing);
  chart_view->setRubberBand(QChartView::HorizontalRubberBand);
  if (auto rubber = chart_view->findChild<QRubberBand *>()) {
 </s> add   track_line = new QGraphicsLineItem(chart);
  track_line->setPen(QPen(Qt::gray, 1, Qt::DashLine));
  value_text = new QGraphicsSimpleTextItem(chart);
  value_text->setBrush(Qt::gray);
  line_marker = new QGraphicsLineItem(chart);
  line_marker->setPen(QPen(Qt::black, 2));

  setChart(chart);

  setRenderHint(QPainter::Antialiasing);
  setRubberBand(QChartView::HorizontalRubberBand);
  if (auto rubber = findChild<QRubberBand *>()) { </s> remove   stacked->addWidget(chart_widget);
  line_marker = new LineMarker(this);
  stacked->addWidget(line_marker);
  line_marker->setAttribute(Qt::WA_TransparentForMouseEvents, true);
  line_marker->raise();

  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
  QObject::connect(can, &CANMessages::updated, this, &ChartWidget::updateState);
  QObject::connect(can, &CANMessages::rangeChanged, this, &ChartWidget::rangeChanged);
  QObject::connect(can, &CANMessages::eventsMerged, this, &ChartWidget::updateSeries);
 </s> add   QObject::connect(can, &CANMessages::updated, this, &ChartView::updateState);
  QObject::connect(can, &CANMessages::rangeChanged, this, &ChartView::rangeChanged);
  QObject::connect(can, &CANMessages::eventsMerged, this, &ChartView::updateSeries); </s> remove   QStackedLayout *stacked = new QStackedLayout(this);
  stacked->setStackingMode(QStackedLayout::StackAll);
 </s> add   QVBoxLayout *main_layout = new QVBoxLayout(this); </s> remove void ChartWidget::updateState() {
  auto chart = chart_view->chart();
  auto axis_x = dynamic_cast<QValueAxis *>(chart->axisX());

  int x = chart->plotArea().left() + chart->plotArea().width() * (can->currentSec() - axis_x->min()) / (axis_x->max() - axis_x->min());
  line_marker->setX(x);
 </s> add void ChartView::updateState() {
  auto axis_x = dynamic_cast<QValueAxis *>(chart()->axisX());
  int x = chart()->plotArea().left() + chart()->plotArea().width() * (can->currentSec() - axis_x->min()) / (axis_x->max() - axis_x->min());
  line_marker->setLine(x, 0, x, height());
      QPalette pal;
      pal.setBrush(QPalette::Base, QColor(0, 0, 0, 80));
      rubber->setPalette(pal);
    }


  
    stacked->addWidget(chart_widget);
    line_marker = new LineMarker(this);
    stacked->addWidget(line_marker);
    line_marker->setAttribute(Qt::WA_TransparentForMouseEvents, true);
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.cc