5#ifndef QQUICKGRIDLAYOUTENGINE_P_H
6#define QQUICKGRIDLAYOUTENGINE_P_H
19#include <QtGui/private/qgridlayoutengine_p.h>
20#include <QtGui/private/qlayoutpolicy_p.h>
21#include <QtCore/qmath.h>
31 int rowSpan = 1,
int columnSpan = 1, Qt::Alignment alignment = { })
38 return effectiveSizeHints()[which];
43 if (!sizeHintCacheDirty)
44 return cachedSizeHints;
46 QQuickLayout::effectiveSizeHints_helper(m_item, cachedSizeHints,
nullptr, useFallbackToWidthOrHeight);
47 useFallbackToWidthOrHeight =
false;
49 sizeHintCacheDirty =
false;
50 return cachedSizeHints;
55 for (
int i = 0; i < Qt::NSizeHints; ++i) {
56 cachedSizeHints[i] = sizeHints[i];
58 sizeHintCacheDirty =
false;
63 qCDebug(lcQuickLayouts) <<
"QQuickGridLayoutItem::invalidate()";
64 sizeHintCacheDirty =
true;
69 return QQuickLayout::effectiveSizePolicy_helper(m_item, orientation, attachedLayoutObject(m_item,
false));
74 QQuickLayoutAttached *info = attachedLayoutObject(
m_item,
false);
75 const QRectF r = info ? rect.marginsRemoved(info->effectiveQMargins()) : rect;
77 const QSizeF newSize = r.size();
78 m_item->setPosition(r.topLeft());
79 if (newSize == oldSize) {
81 if (QQuickLayout *lay = qobject_cast<QQuickLayout *>(m_item)) {
82 if (lay->invalidatedArrangement())
83 lay->rearrange(newSize);
90 inline virtual QString toString()
const override {
return QDebug::toString(m_item); }
97 mutable unsigned sizeHintCacheDirty : 1;
98 mutable unsigned useFallbackToWidthOrHeight : 1;
106 for (
int i = 0; i < q_items.size(); ++i) {
107 if (item ==
static_cast<QQuickGridLayoutItem*>(q_items.at(i))->layoutItem())
115 for (
int i = q_items.size() - 1; i >= 0; --i) {
123 void setAlignment(QQuickItem *quickItem, Qt::Alignment alignment);
125 void setStretchFactor(QQuickItem *quickItem,
int stretch, Qt::Orientation orientation);
void setStretchFactor(QQuickItem *quickItem, int stretch, Qt::Orientation orientation)
void setAlignment(QQuickItem *quickItem, Qt::Alignment alignment)
QQuickGridLayoutItem * findLayoutItem(QQuickItem *layoutItem) const
int indexOf(QQuickItem *item) const
QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const override
QSizeF * effectiveSizeHints() const
QQuickGridLayoutItem(QQuickItem *item, int row, int column, int rowSpan=1, int columnSpan=1, Qt::Alignment alignment={ })
void setCachedSizeHints(QSizeF *sizeHints)
QQuickItem * layoutItem() const
virtual QString toString() const override
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const override
void setGeometry(const QRectF &rect) override