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),