File indexing completed on 2026-09-16 09:23:43
0001
0002
0003
0004
0005 #ifndef QGRAPHICSANCHORLAYOUT_H
0006 #define QGRAPHICSANCHORLAYOUT_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qgraphicsitem.h>
0010 #include <QtWidgets/qgraphicslayout.h>
0011
0012 QT_REQUIRE_CONFIG(graphicsview);
0013
0014 QT_BEGIN_NAMESPACE
0015
0016 class QGraphicsAnchorPrivate;
0017 class QGraphicsAnchorLayout;
0018 class QGraphicsAnchorLayoutPrivate;
0019
0020 class Q_WIDGETS_EXPORT QGraphicsAnchor : public QObject
0021 {
0022 Q_OBJECT
0023 Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET unsetSpacing)
0024 Q_PROPERTY(QSizePolicy::Policy sizePolicy READ sizePolicy WRITE setSizePolicy)
0025 public:
0026 void setSpacing(qreal spacing);
0027 void unsetSpacing();
0028 qreal spacing() const;
0029 void setSizePolicy(QSizePolicy::Policy policy);
0030 QSizePolicy::Policy sizePolicy() const;
0031 ~QGraphicsAnchor();
0032 private:
0033 QGraphicsAnchor(QGraphicsAnchorLayout *parent);
0034
0035 Q_DECLARE_PRIVATE(QGraphicsAnchor)
0036
0037 friend class QGraphicsAnchorLayoutPrivate;
0038 };
0039
0040 class Q_WIDGETS_EXPORT QGraphicsAnchorLayout : public QGraphicsLayout
0041 {
0042 public:
0043 QGraphicsAnchorLayout(QGraphicsLayoutItem *parent = nullptr);
0044 virtual ~QGraphicsAnchorLayout();
0045
0046 QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge,
0047 QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge);
0048 QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge,
0049 QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge);
0050
0051 void addCornerAnchors(QGraphicsLayoutItem *firstItem, Qt::Corner firstCorner,
0052 QGraphicsLayoutItem *secondItem, Qt::Corner secondCorner);
0053
0054 void addAnchors(QGraphicsLayoutItem *firstItem,
0055 QGraphicsLayoutItem *secondItem,
0056 Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical);
0057
0058 void setHorizontalSpacing(qreal spacing);
0059 void setVerticalSpacing(qreal spacing);
0060 void setSpacing(qreal spacing);
0061 qreal horizontalSpacing() const;
0062 qreal verticalSpacing() const;
0063
0064 void removeAt(int index) override;
0065 void setGeometry(const QRectF &rect) override;
0066 int count() const override;
0067 QGraphicsLayoutItem *itemAt(int index) const override;
0068
0069 void invalidate() override;
0070 protected:
0071 QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override;
0072
0073 private:
0074 Q_DISABLE_COPY(QGraphicsAnchorLayout)
0075 Q_DECLARE_PRIVATE(QGraphicsAnchorLayout)
0076
0077 friend class QGraphicsAnchor;
0078 };
0079
0080 QT_END_NAMESPACE
0081
0082 #endif