summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElias Hautala <Elias.Hautala@qt.io>2022-08-04 14:15:15 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-08-15 09:24:28 +0000
commitafddbad1a6dcbd278473bbcbd306493598c497ef (patch)
tree87995968f030d7cebaa11e7e53407f6f37dd80c6
parent74092463020e53e3c920430a71501ffe33fa0a0c (diff)
Piechartcustomization: add function that changes widgets position
Adds function that changes widgets position on layout based on the windows aspect ratio. Before this the chart was unreadable and settings could not be fully seen when using the example on Android in portrait. Fixes: QTCREATORBUG-27650 Change-Id: Ieffbd80ca52131b27a524084d8cc81b3acfa335f Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Jani Korteniemi <jani.korteniemi@qt.io> (cherry picked from commit 0cbae2fb8f87139eee2088d63019b6f2772ddde0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--examples/charts/piechartcustomization/mainwidget.cpp41
-rw-r--r--examples/charts/piechartcustomization/mainwidget.h8
2 files changed, 45 insertions, 4 deletions
diff --git a/examples/charts/piechartcustomization/mainwidget.cpp b/examples/charts/piechartcustomization/mainwidget.cpp
index 5d2ac832..8c2d9b71 100644
--- a/examples/charts/piechartcustomization/mainwidget.cpp
+++ b/examples/charts/piechartcustomization/mainwidget.cpp
@@ -81,7 +81,7 @@ MainWidget::MainWidget(QWidget *parent)
m_legendCheckBox = new QCheckBox();
- QScrollArea *settingsScrollBar = new QScrollArea();
+ settingsScrollBar = new QScrollArea();
QWidget *settingsContentWidget = new QWidget();
QFormLayout *chartSettingsLayout = new QFormLayout(settingsContentWidget);
@@ -212,6 +212,7 @@ MainWidget::MainWidget(QWidget *parent)
sliceSettingsLayout->addRow("Explode distance", m_sliceExplodedFactor);
QGroupBox *sliceSettings = new QGroupBox("Selected slice");
sliceSettings->setLayout(sliceSettingsLayout);
+ sliceSettings->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
connect(m_sliceName, &QLineEdit::textChanged, this, &MainWidget::updateSliceSettings);
connect(m_sliceValue,
@@ -244,12 +245,16 @@ MainWidget::MainWidget(QWidget *parent)
settingsLayout->addWidget(sliceSettings);
settingsContentWidget->setLayout(settingsLayout);
+
settingsScrollBar->setWidget(settingsContentWidget);
- settingsScrollBar->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ settingsScrollBar->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ settingsScrollBar->setWidgetResizable(true);
+ settingsScrollBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+ m_chartView->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
- QGridLayout *baseLayout = new QGridLayout();
+ baseLayout = new QGridLayout();
baseLayout->addWidget(settingsScrollBar, 0, 0);
- baseLayout->addWidget(m_chartView, 0, 1);
+ baseLayout->addWidget(m_chartView, 1, 0);
setLayout(baseLayout);
updateSerieSettings();
@@ -393,4 +398,32 @@ void MainWidget::removeSlice()
m_slice = 0;
}
+void MainWidget::resizeEvent(QResizeEvent *e)
+{
+ if (width() == 0 || height() == 0)
+ return;
+
+ const double aspectRatio = double(width()) / double(height());
+
+ if ((aspectRatio < 1.0) && (oldAspectRatio > 1.0)) {
+ baseLayout->removeWidget(m_chartView);
+ baseLayout->removeWidget(settingsScrollBar);
+
+ baseLayout->addWidget(m_chartView, 0, 0);
+ baseLayout->addWidget(settingsScrollBar, 1, 0);
+
+ oldAspectRatio = aspectRatio;
+ }
+ else if ((aspectRatio > 1.0) && (oldAspectRatio < 1.0)) {
+ baseLayout->removeWidget(m_chartView);
+ baseLayout->removeWidget(settingsScrollBar);
+
+ baseLayout->addWidget(m_chartView, 0, 0);
+ baseLayout->addWidget(settingsScrollBar, 0, 1);
+
+ oldAspectRatio = aspectRatio;
+ }
+}
+
+
#include "moc_mainwidget.cpp"
diff --git a/examples/charts/piechartcustomization/mainwidget.h b/examples/charts/piechartcustomization/mainwidget.h
index d3c1e724..ba6c3670 100644
--- a/examples/charts/piechartcustomization/mainwidget.h
+++ b/examples/charts/piechartcustomization/mainwidget.h
@@ -29,6 +29,8 @@
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
+#include "qgridlayout.h"
+#include "qscrollarea.h"
#include <QtWidgets/QWidget>
#include <QtCharts/QChartGlobal>
@@ -70,6 +72,8 @@ public Q_SLOTS:
void removeSlice();
private:
+ void resizeEvent(QResizeEvent *e);
+
QComboBox *m_themeComboBox;
QCheckBox *m_aaCheckBox;
QCheckBox *m_animationsCheckBox;
@@ -100,6 +104,10 @@ private:
QPushButton *m_labelBrush;
QComboBox *m_labelPosition;
BrushTool *m_labelBrushTool;
+ QGridLayout *baseLayout;
+ QScrollArea *settingsScrollBar;
+
+ double oldAspectRatio;
};
#endif // MAINWIDGET_H