summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorElias Hautala <Elias.Hautala@qt.io>2022-08-04 14:15:15 +0300
committerElias Hautala <Elias.Hautala@qt.io>2022-08-15 11:22:21 +0300
commit0cbae2fb8f87139eee2088d63019b6f2772ddde0 (patch)
tree76babf2467f2abb6edd1dd792eea1d216c5eab54 /examples
parente37ff60663643a05fd1018c1c4beed8df6dccd3c (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 Pick-to: 6.2 6.3 6.4 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>
Diffstat (limited to 'examples')
-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 5a490721..819f5cf8 100644
--- a/examples/charts/piechartcustomization/mainwidget.cpp
+++ b/examples/charts/piechartcustomization/mainwidget.cpp
@@ -55,7 +55,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);
@@ -186,6 +186,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,
@@ -218,12 +219,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();
@@ -367,4 +372,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 6e9b13cb..16cf097b 100644
--- a/examples/charts/piechartcustomization/mainwidget.h
+++ b/examples/charts/piechartcustomization/mainwidget.h
@@ -3,6 +3,8 @@
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
+#include "qgridlayout.h"
+#include "qscrollarea.h"
#include <QtWidgets/QWidget>
#include <QtCharts/QChartGlobal>
@@ -44,6 +46,8 @@ public Q_SLOTS:
void removeSlice();
private:
+ void resizeEvent(QResizeEvent *e);
+
QComboBox *m_themeComboBox;
QCheckBox *m_aaCheckBox;
QCheckBox *m_animationsCheckBox;
@@ -74,6 +78,10 @@ private:
QPushButton *m_labelBrush;
QComboBox *m_labelPosition;
BrushTool *m_labelBrushTool;
+ QGridLayout *baseLayout;
+ QScrollArea *settingsScrollBar;
+
+ double oldAspectRatio;
};
#endif // MAINWIDGET_H