Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qquickitemgroup.cpp
Go to the documentation of this file.
1
// Copyright (C) 2017 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
include
"qquickitemgroup_p.h"
6
7
#
include
<
QtQuick
/
private
/
qquickimplicitsizeitem_p_p
.
h
>
8
9
QT_BEGIN_NAMESPACE
10
11
QQuickItemGroup::QQuickItemGroup(QQuickItem *parent)
12
: QQuickImplicitSizeItem(*(
new
QQuickImplicitSizeItemPrivate), parent)
13
{
14
}
15
16
QQuickItemGroup::~QQuickItemGroup()
17
{
18
const
auto
children = childItems();
19
for
(QQuickItem *child : children)
20
unwatch(child);
21
}
22
23
void
QQuickItemGroup::watch(QQuickItem *item)
24
{
25
QQuickItemPrivate::get(item)->addItemChangeListener(
this
, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
26
}
27
28
void
QQuickItemGroup::unwatch(QQuickItem *item)
29
{
30
QQuickItemPrivate::get(item)->removeItemChangeListener(
this
, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
31
}
32
33
QSizeF QQuickItemGroup::calculateImplicitSize()
const
34
{
35
qreal width = 0;
36
qreal height = 0;
37
const
auto
children = childItems();
38
for
(QQuickItem *child : children) {
39
width = qMax(width, child->implicitWidth());
40
height = qMax(height, child->implicitHeight());
41
}
42
return
QSizeF(width, height);
43
}
44
45
void
QQuickItemGroup::updateImplicitSize()
46
{
47
QSizeF size = calculateImplicitSize();
48
setImplicitSize(size.width(), size.height());
49
}
50
51
void
QQuickItemGroup::itemChange(ItemChange change,
const
ItemChangeData &data)
52
{
53
QQuickImplicitSizeItem::itemChange(change, data);
54
switch
(change) {
55
case
ItemChildAddedChange:
56
watch(data.item);
57
data.item->setSize(QSizeF(width(), height()));
58
updateImplicitSize();
59
break
;
60
case
ItemChildRemovedChange:
61
unwatch(data.item);
62
updateImplicitSize();
63
break
;
64
default
:
65
break
;
66
}
67
}
68
69
void
QQuickItemGroup::geometryChange(
const
QRectF &newGeometry,
const
QRectF &oldGeometry)
70
{
71
if
(newGeometry.size() != oldGeometry.size()) {
72
const
auto
children = childItems();
73
for
(QQuickItem *child : children)
74
child->setSize(newGeometry.size());
75
}
76
QQuickImplicitSizeItem::geometryChange(newGeometry, oldGeometry);
77
}
78
79
void
QQuickItemGroup::itemImplicitWidthChanged(QQuickItem *)
80
{
81
setImplicitWidth(calculateImplicitSize().width());
82
}
83
84
void
QQuickItemGroup::itemImplicitHeightChanged(QQuickItem *)
85
{
86
setImplicitHeight(calculateImplicitSize().height());
87
}
88
89
QT_END_NAMESPACE
90
91
#
include
"moc_qquickitemgroup_p.cpp"
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtdeclarative
src
quickcontrolsimpl
qquickitemgroup.cpp
Generated on
for Qt by
1.18.0