cabana: fix chart background issue in live mode (#27793)

* fix background

* Update tools/cabana/chartswidget.cc

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: ea91532ac1
vw-mqb-aeb
Dean Lee 2 years ago committed by GitHub
parent 07c2eb11a9
commit ca1fe711af
  1. 9
      tools/cabana/chartswidget.cc
  2. 1
      tools/cabana/chartswidget.h

@ -358,6 +358,7 @@ bool ChartsWidget::event(QEvent *event) {
case QEvent::WindowDeactivate: case QEvent::WindowDeactivate:
case QEvent::FocusIn: case QEvent::FocusIn:
case QEvent::FocusOut: case QEvent::FocusOut:
case QEvent::Leave:
showValueTip(-1); showValueTip(-1);
break; break;
default: default:
@ -618,7 +619,7 @@ void ChartView::updateSeries(const cabana::Signal *sig) {
} }
} }
updateAxisY(); updateAxisY();
resetChartCache(); chart_pixmap = QPixmap();
} }
// auto zoom on yaxis // auto zoom on yaxis
@ -874,9 +875,9 @@ void ChartView::paintEvent(QPaintEvent *event) {
const qreal dpr = viewport()->devicePixelRatioF(); const qreal dpr = viewport()->devicePixelRatioF();
chart_pixmap = QPixmap(viewport()->size() * dpr); chart_pixmap = QPixmap(viewport()->size() * dpr);
chart_pixmap.setDevicePixelRatio(dpr); chart_pixmap.setDevicePixelRatio(dpr);
chart_pixmap.fill(palette().color(QPalette::Base));
QPainter p(&chart_pixmap); QPainter p(&chart_pixmap);
p.setRenderHints(QPainter::Antialiasing); p.setRenderHints(QPainter::Antialiasing);
drawBackground(&p, viewport()->rect());
scene()->setSceneRect(viewport()->rect()); scene()->setSceneRect(viewport()->rect());
scene()->render(&p); scene()->render(&p);
} }
@ -891,6 +892,10 @@ void ChartView::paintEvent(QPaintEvent *event) {
} }
} }
void ChartView::drawBackground(QPainter *painter, const QRectF &rect) {
painter->fillRect(rect, palette().color(QPalette::Base));
}
void ChartView::drawForeground(QPainter *painter, const QRectF &rect) { void ChartView::drawForeground(QPainter *painter, const QRectF &rect) {
// draw time line // draw time line
qreal x = chart()->mapToPosition(QPointF{cur_sec, 0}).x(); qreal x = chart()->mapToPosition(QPointF{cur_sec, 0}).x();

@ -91,6 +91,7 @@ private:
void resetChartCache(); void resetChartCache();
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
void drawForeground(QPainter *painter, const QRectF &rect) override; void drawForeground(QPainter *painter, const QRectF &rect) override;
void drawBackground(QPainter *painter, const QRectF &rect) override;
std::tuple<double, double, int> getNiceAxisNumbers(qreal min, qreal max, int tick_count); std::tuple<double, double, int> getNiceAxisNumbers(qreal min, qreal max, int tick_count);
qreal niceNumber(qreal x, bool ceiling); qreal niceNumber(qreal x, bool ceiling);
QXYSeries *createSeries(SeriesType type, QColor color); QXYSeries *createSeries(SeriesType type, QColor color);

Loading…
Cancel
Save