File indexing completed on 2025-04-27 03:58:30

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2014-09-12
0007  * Description : Vertical and horizontal layout widget helpers.
0008  *
0009  * SPDX-FileCopyrightText: 2014-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  *
0011  * SPDX-License-Identifier: GPL-2.0-or-later
0012  *
0013  * ============================================================ */
0014 
0015 #ifndef DIGIKAM_DLAYOUT_BOX_H
0016 #define DIGIKAM_DLAYOUT_BOX_H
0017 
0018 // Qt includes
0019 
0020 #include <QWidget>
0021 #include <QFrame>
0022 #include <QSize>
0023 #include <QMargins>
0024 
0025 // Local includes
0026 
0027 #include "digikam_export.h"
0028 
0029 namespace Digikam
0030 {
0031 
0032 /**
0033  * An Horizontal widget to host children widgets
0034  */
0035 class DIGIKAM_EXPORT DHBox : public QFrame
0036 {
0037     Q_OBJECT
0038     Q_DISABLE_COPY(DHBox)
0039 
0040 public:
0041 
0042     explicit DHBox(QWidget* const parent = nullptr);
0043     ~DHBox()                          override;
0044 
0045     void setSpacing(int space);
0046     void setContentsMargins(const QMargins& margins);
0047     void setContentsMargins(int left, int top, int right, int bottom);
0048     void setStretchFactor(QWidget* const widget, int stretch);
0049 
0050     QSize sizeHint()            const override;
0051     QSize minimumSizeHint()     const override;
0052 
0053 protected:
0054 
0055     DHBox(bool vertical, QWidget* const parent);
0056 
0057     void childEvent(QChildEvent* e)   override;
0058 };
0059 
0060 // ------------------------------------------------------------------------------------
0061 
0062 /**
0063  * A Vertical widget to host children widgets
0064  */
0065 class DIGIKAM_EXPORT DVBox : public DHBox
0066 {
0067     Q_OBJECT
0068     Q_DISABLE_COPY(DVBox)
0069 
0070   public:
0071 
0072     explicit DVBox(QWidget* const parent = nullptr);
0073     ~DVBox()                          override;
0074 };
0075 
0076 } // namespace Digikam
0077 
0078 #endif // DIGIKAM_DLAYOUT_BOX_H