/** * @RDE_HEADER@ * GridLaout with auto column layouter. * Layouts all widgets depending on the maxColumn value * releayouts if maxColumn changed * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include "lts_widgets_export.h" #include "lts_base.h" class QWidget; namespace LtsWidgets { /** * @brief The LtsGridLayout class provides a LayoutItem for the Lts Layout System and is the equivalent to the QGridLayout. * An LtsGridLayout can be added to a Widget as any other LayoutItem * A LtsGridLayout got two modes: * The first one is the normal operation Mode with a fixed ColumnSize * every time a widget is added wit add_widget (not addWidget!) * it will use the next column at the current used row * when maxColum is reached in the current row * the Widget will be added to a new row * * The Second Mode is enabeled with AutoSize * There the MaxColumnSize will be calculated * when a rezize event accure */ class LTSWIDGETS_EXPORT LtsGridLayout : public QGridLayout { Q_OBJECT public: /** * @brief Constructor for LtsGridLayout * @param ButtonSize for calcualting Gridzize on autoSize * @param Parent widget * @param max Column to use */ explicit LtsGridLayout(LtsWidgets::ButtonSize buttonSize, QWidget *parent = nullptr, int maxColumn = 1); /** * @brief adds a QWidget to the Layout in the current Row * if MaxColumn is reached, the widget will be added to a new row * @param QWidget addet to the Layout */ void add_widget(QWidget *widget); /** * @brief enables autoSize * calculates on rezize the MaxColum count for given ButtonSize * @param enable autoSize */ void setAutoSize(bool enable); /** * @brief set MaxColumn * @param int maxColum count */ void setMaxColumn(int max); private: void addWidgetInternal(QWidget *widget); public Q_SLOTS: void onParentResize(QResizeEvent *e); private Q_SLOTS: void onWidgetDestroyed(); private: LtsWidgets::ButtonSize m_buttonSize; int m_defaultMaxColumn; int m_maxColumn; int m_colSize; QVector m_widgetList; QRect m_oldGeo; QSize m_oldSize; bool m_autoSize; }; } // namespace