4#ifndef QGRAPHICSANCHORLAYOUT_P_H
5#define QGRAPHICSANCHORLAYOUT_P_H
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include <QGraphicsWidget>
20#include <private/qobject_p.h>
27#include <QtGui/private/qgridlayoutengine_p.h>
105 void dump(
int indent = 2);
149inline QString AnchorData::toString()
const
234inline QString AnchorVertex::toString()
const
247 edge =
"HorizontalCenter"_L1;
256 edge =
"VerticalCenter"_L1;
267 itemName =
"layout"_L1;
274 return edge.
arg(itemName);
325 {
return q->d_func(); }
356 MinimumToMinPreferred = 0,
359 MaxPreferredToMaximum
370 return q ?
q->d_func() :
nullptr;
389 void createLayoutEdges();
390 void deleteLayoutEdges();
399 if (!
data->graphicsAnchor) {
401 data->graphicsAnchor->d_func()->data =
data;
403 return data->graphicsAnchor;
440 void calculateGraphs();
446 bool simplifyGraphIteration(
Qt::Orientation orientation,
bool *feasible);
453 void restoreSimplifiedAnchor(
AnchorData *edge);
479 return m_vertexList.value(itemEdge).first;
489 if (layoutFirstVertex[orientation] == oldV)
490 layoutFirstVertex[orientation] = newV;
491 else if (layoutCentralVertex[orientation] == oldV)
492 layoutCentralVertex[orientation] = newV;
493 else if (layoutLastVertex[orientation] == oldV)
494 layoutLastVertex[orientation] = newV;
502 void setItemsGeometries(
const QRectF &geom);
513 bool hasConflicts()
const;
556#if defined(QT_DEBUG) || defined(QT_BUILD_INTERNAL)
uint calculateGraphCacheDirty
QHVContainer< Interval > interpolationInterval
QHVContainer< Graph< AnchorVertex, AnchorData > > graph
QHVContainer< QList< QSimplexConstraint * > > constraints
QHash< QPair< QGraphicsLayoutItem *, Qt::AnchorPoint >, QPair< AnchorVertex *, int > > m_vertexList
QHVContainer< QList< AnchorData * > > anchorsFromSimplifiedVertices
QHVContainer< QList< AnchorVertexPair * > > simplifiedVertices
static Qt::AnchorPoint pickEdge(Qt::AnchorPoint edge, Qt::Orientation orientation)
QHVContainer< QMultiHash< AnchorVertex *, GraphPath > > graphPaths
static QGraphicsAnchorLayoutPrivate * get(QGraphicsAnchorLayout *q)
QGraphicsAnchor * acquireGraphicsAnchor(AnchorData *data)
void changeLayoutVertex(Qt::Orientation orientation, AnchorVertex *oldV, AnchorVertex *newV)
QLayoutStyleInfo cachedStyleInfo
QHVContainer< QList< QSimplexConstraint * > > itemCenterConstraints
@ PreferredToMaxPreferred
@ MinPreferredToPreferred
QHVContainer< QSet< QGraphicsLayoutItem * > > m_floatItems
QList< QGraphicsLayoutItem * > items
AnchorVertex * internalVertex(const QGraphicsLayoutItem *item, Qt::AnchorPoint edge) const
AnchorVertex * internalVertex(const QPair< QGraphicsLayoutItem *, Qt::AnchorPoint > &itemEdge) const
The QGraphicsAnchorLayout class provides a layout where one can anchor widgets together in Graphics V...
void setSizePolicy(QSizePolicy::Policy policy)
~QGraphicsAnchorPrivate()
QSizePolicy::Policy sizePolicy
static QGraphicsAnchorPrivate * get(QGraphicsAnchor *q)
QGraphicsAnchorLayoutPrivate * layoutPrivate
void setSpacing(qreal value)
The QGraphicsAnchor class represents an anchor between two items in a QGraphicsAnchorLayout.
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
QVariant data(int key) const
Returns this item's custom data for the key key as a QVariant.
The QGraphicsLayoutItem class can be inherited to allow your custom items to be managed by layouts.
QGraphicsItem * graphicsItem() const
Returns the QGraphicsItem that this layout item represents.
bool isLayout() const
Returns true if this QGraphicsLayoutItem is a layout (e.g., is inherited by an object that arranges o...
const_reference at(qsizetype i) const noexcept
\inmodule QtCore\reentrant
Policy
This enum describes the various per-dimension sizing types used when constructing a QSizePolicy.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
QString & insert(qsizetype i, QChar c)
QString toString() const
Returns the variant as a QString if the variant has a userType() including, but not limited to:
QSet< AnchorData * > negatives
QSet< AnchorData * > positives
QSimplexConstraint * constraint(const GraphPath &path) const
Combined button and popup list for selecting options.
std::pair< T1, T2 > QPair
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLfloat GLfloat GLfloat v2
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLdouble GLdouble GLdouble GLdouble q
GLsizei const GLchar *const * path
constexpr decltype(auto) qMakePair(T1 &&value1, T2 &&value2) noexcept(noexcept(std::make_pair(std::forward< T1 >(value1), std::forward< T2 >(value2))))
QQuickAnchors * anchors(QQuickItem *item)
static QString dump(const QByteArray &)
#define Q_AUTOTEST_EXPORT
#define QT_REQUIRE_CONFIG(feature)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
char * toString(const MyType &t)
[31]
QList< QSimplexConstraint * > nonTrunkConstraints
QList< QSimplexConstraint * > trunkConstraints
virtual void updateChildrenSizes()
void refreshSizeHints(const QLayoutStyleInfo *styleInfo=nullptr)
QGraphicsLayoutItem * item
QGraphicsAnchor * graphicsAnchor
AnchorVertexPair(AnchorVertex *v1, AnchorVertex *v2, AnchorData *data)
AnchorData * m_removedAnchor
QList< AnchorData * > m_secondAnchors
QList< AnchorData * > m_firstAnchors
AnchorVertex(QGraphicsLayoutItem *item, Qt::AnchorPoint edge)
virtual ~AnchorVertex()=default
QGraphicsLayoutItem * m_item
virtual void updateChildrenSizes() override
ParallelAnchorData(AnchorData *first, AnchorData *second)
QList< QSimplexConstraint * > m_secondConstraints
bool calculateSizeHints()
QList< QSimplexConstraint * > m_firstConstraints
bool secondForward() const
QList< AnchorVertex * > m_children
QList< AnchorData * > m_edges
virtual void updateChildrenSizes() override
SequentialAnchorData(const QList< AnchorVertex * > &vertices, const QList< AnchorData * > &edges)
void calculateSizeHints()