diff options
author | Elias Hautala <Elias.Hautala@qt.io> | 2022-08-04 14:15:15 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-08-15 09:24:28 +0000 |
commit | eb6cb5c5f686a1e73ca06409de4522e7cb4468d3 (patch) | |
tree | 8ca97328e683707c100adb8093503cbfb2826d0c | |
parent | ba8e06d125c52dddb5c55db19ef7bf6efd7f7baa (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.cpp | 41 | ||||
-rw-r--r-- | examples/charts/piechartcustomization/mainwidget.h | 8 |
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 |