30 Q_PROPERTY(
int count READ count NOTIFY countChanged)
31 Q_PROPERTY(
int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
32 QML_NAMED_ELEMENT(StackLayout)
33 QML_ADDED_IN_VERSION(1, 3)
34 QML_ATTACHED(QQuickStackLayoutAttached)
37 explicit QQuickStackLayout(QQuickItem *parent =
nullptr);
39 int currentIndex()
const;
40 void setCurrentIndex(
int index);
42 void componentComplete() override;
43 void itemChange(ItemChange change,
const ItemChangeData &value) override;
44 QSizeF sizeHint(Qt::SizeHint whichSizeHint)
const override;
45 void setAlignment(QQuickItem *item, Qt::Alignment align) override;
46 void invalidate(QQuickItem *childItem =
nullptr) override;
47 void updateLayoutItems() override { }
48 void rearrange(
const QSizeF &) override;
49 void setStretchFactor(QQuickItem *item,
int stretchFactor, Qt::Orientation orient) override;
52 Q_INVOKABLE QQuickItem *itemAt(
int index)
const override;
53 int itemCount()
const override;
54 int indexOf(QQuickItem *item)
const;
57 void itemSiblingOrderChanged(QQuickItem *item) override;
59 static QQuickStackLayoutAttached *qmlAttachedProperties(QObject *object);
62 void currentIndexChanged();
66 enum AdjustCurrentIndexPolicy {
67 DontAdjustCurrentIndex,
71 static void collectItemSizeHints(QQuickItem *item, QSizeF *sizeHints);
72 bool shouldIgnoreItem(QQuickItem *item)
const;
73 void childItemsChanged(AdjustCurrentIndexPolicy adjustCurrentIndexPolicy = DontAdjustCurrentIndex);
74 Q_DECLARE_PRIVATE(QQuickStackLayout)
76 friend class QQuickStackLayoutAttached;
78 QList<QQuickItem*> m_items;
81 inline QSizeF &min() {
return array[Qt::MinimumSize]; }
82 inline QSizeF &pref() {
return array[Qt::PreferredSize]; }
83 inline QSizeF &max() {
return array[Qt::MaximumSize]; }
84 QSizeF array[Qt::NSizeHints];
87 mutable QHash<QQuickItem*, SizeHints> m_cachedItemSizeHints;
88 mutable QSizeF m_cachedSizeHints[Qt::NSizeHints];
89 SizeHints &cachedItemSizeHints(
int index)
const;
106 Q_PROPERTY(
int index READ index NOTIFY indexChanged FINAL)
107 Q_PROPERTY(
bool isCurrentItem READ isCurrentItem NOTIFY isCurrentItemChanged FINAL)
108 Q_PROPERTY(QQuickStackLayout *layout READ layout NOTIFY layoutChanged FINAL)
111 QQuickStackLayoutAttached(QObject *object);
114 void setIndex(
int index);
116 bool isCurrentItem()
const;
117 void setIsCurrentItem(
bool isCurrentItem);
119 QQuickStackLayout *layout()
const;
120 void setLayout(QQuickStackLayout *layout);
124 void isCurrentItemChanged();
125 void layoutChanged();
129 bool m_isCurrentItem =
false;
130 QQuickStackLayout *m_layout =
nullptr;