diff options
Diffstat (limited to 'examples/charts/piechartcustomization/mainwidget.cpp')
-rw-r--r-- | examples/charts/piechartcustomization/mainwidget.cpp | 41 |
1 files changed, 37 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" |