viewer: keep plot axis labels readable when compressed

When the plot dock was short, Qt Charts dropped the axis labels first, making
the plot hard to read.

- Reclaim Qt Charts' outer graphics-layout padding and trim the inner margins
  (both chart views) so the plot and its labels get the available space.
- Raise the chart minimum height (dataset-info 80 -> 140, per-image 120 -> 140)
  so the dock can't be squeezed below the point where the axis labels fit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 15:11:24 +02:00
parent 94b66348c5
commit c5457e2e27
3 changed files with 11 additions and 2 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ JFJochViewerDatasetInfo::JFJochViewerDatasetInfo(QWidget *parent) : QWidget(pare
stack = new QStackedWidget(this);
chart_view = new JFJochDatasetInfoChartView(this);
chart_view->setMinimumHeight(80); // low floor so the bottom dock resizes freely (default is set via resizeDocks)
chart_view->setMinimumHeight(140); // keep enough room for the axis labels even when compressed
grid_scan_image = new JFJochGridScanImage(this);
image_chart = new JFJochViewerSidePanelChart(this); // per-image profiles, folded in from the side panel
@@ -6,12 +6,18 @@
#include <QClipboard>
#include <QCategoryAxis>
#include <QtCharts/QLegendMarker>
#include <QGraphicsLayout>
#include "JFJochDatasetInfoChartView.h"
JFJochDatasetInfoChartView::JFJochDatasetInfoChartView(QWidget *parent)
: QChartView(new QChart(), parent) {
chart()->legend()->hide();
// Reclaim Qt Charts' outer layout padding and trim the inner margins so the axis labels keep
// their room even when the dock is short (otherwise they are the first thing Qt drops).
chart()->layout()->setContentsMargins(0, 0, 0, 0);
chart()->setMargins(QMargins(2, 2, 6, 2));
chart()->setBackgroundRoundness(0);
setRenderHint(QPainter::Antialiasing);
// setRubberBand(QChartView::RubberBand::RectangleRubberBand);
setMouseTracking(true);
+4 -1
View File
@@ -8,11 +8,14 @@
#include <QApplication>
#include <QCategoryAxis>
#include <QRegularExpression>
#include <QGraphicsLayout>
JFJochSimpleChartView::JFJochSimpleChartView(QWidget *parent)
: QChartView(new QChart(), parent) {
chart()->legend()->hide();
setMinimumHeight(120); // soft floor: let the host dock/window decide the height
chart()->layout()->setContentsMargins(0, 0, 0, 0); // reclaim padding for the plot + labels
chart()->setMargins(QMargins(2, 2, 6, 2));
setMinimumHeight(140); // soft floor: enough for the axis labels to stay readable
setRenderHint(QPainter::Antialiasing);
setMouseTracking(true);
//setRubberBand(QChartView::RubberBand::HorizontalRubberBand);