From bd74629420b1321d1a8354c69b6cda62f9c9e5ff Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 2 Jun 2023 22:03:52 +0200 Subject: [PATCH] Add helpers to add and remove trailing spacer items in QBoxLayouts --- src/utils/utility.cpp | 28 ++++++++++++++++++++++++++++ src/utils/utility.hpp | 2 ++ 2 files changed, 30 insertions(+) diff --git a/src/utils/utility.cpp b/src/utils/utility.cpp index e7ef9851..e021fa70 100644 --- a/src/utils/utility.cpp +++ b/src/utils/utility.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -255,6 +256,33 @@ void SetLayoutVisible(QLayout *layout, bool visible) } } +void AddStretchIfNecessary(QBoxLayout *layout) +{ + int itemCount = layout->count(); + if (itemCount > 0) { + auto lastItem = layout->itemAt(itemCount - 1); + auto lastSpacer = dynamic_cast(lastItem); + if (!lastSpacer) { + layout->addStretch(); + } + } else { + layout->addStretch(); + } +} + +void RemoveStretchIfPresent(QBoxLayout *layout) +{ + int itemCount = layout->count(); + if (itemCount > 0) { + auto lastItem = layout->itemAt(itemCount - 1); + auto lastSpacer = dynamic_cast(lastItem); + if (lastSpacer) { + layout->removeItem(lastItem); + delete lastItem; + } + } +} + void MinimizeSizeOfColumn(QGridLayout *layout, int idx) { if (idx >= layout->columnCount()) { diff --git a/src/utils/utility.hpp b/src/utils/utility.hpp index eecda3bd..89804a49 100644 --- a/src/utils/utility.hpp +++ b/src/utils/utility.hpp @@ -88,6 +88,8 @@ void PlaceWidgets(std::string text, QBoxLayout *layout, void DeleteLayoutItemWidget(QLayoutItem *item); void ClearLayout(QLayout *layout, int afterIdx = 0); void SetLayoutVisible(QLayout *layout, bool visible); +void AddStretchIfNecessary(QBoxLayout *layout); +void RemoveStretchIfPresent(QBoxLayout *layout); void MinimizeSizeOfColumn(QGridLayout *layout, int idx); QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, QColor endColor = QColor(0, 0, 0, 0),