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
qquickgridlayoutengine_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 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
#
ifndef
QQUICKGRIDLAYOUTENGINE_P_H
6
#
define
QQUICKGRIDLAYOUTENGINE_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists for the convenience
13
// of the graphics view layout classes. This header
14
// file may change from version to version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
<
QtGui
/
private
/
qgridlayoutengine_p
.
h
>
20
#
include
<
QtGui
/
private
/
qlayoutpolicy_p
.
h
>
21
#
include
<
QtCore
/
qmath
.
h
>
22
23
#
include
"qquickitem.h"
24
#
include
"qquicklayout_p.h"
25
#
include
"qdebug.h"
26
QT_BEGIN_NAMESPACE
27
28
class
QQuickGridLayoutItem
:
public
QGridLayoutItem
{
29
public
:
30
QQuickGridLayoutItem
(QQuickItem *item,
int
row,
int
column,
31
int
rowSpan = 1,
int
columnSpan = 1, Qt::Alignment alignment = { })
32
:
QGridLayoutItem
(
row
,
column
,
rowSpan
,
columnSpan
,
alignment
),
m_item
(item), sizeHintCacheDirty(
true
), useFallbackToWidthOrHeight(
true
) {}
33
34
35
QSizeF
sizeHint
(Qt::SizeHint which,
const
QSizeF &constraint)
const
override
36
{
37
Q_UNUSED(constraint);
// Quick Layouts does not support constraint atm
38
return
effectiveSizeHints()[which];
39
}
40
41
QSizeF
*
effectiveSizeHints
()
const
42
{
43
if
(!sizeHintCacheDirty)
44
return
cachedSizeHints;
45
46
QQuickLayout::effectiveSizeHints_helper(m_item, cachedSizeHints,
nullptr
, useFallbackToWidthOrHeight);
47
useFallbackToWidthOrHeight =
false
;
48
49
sizeHintCacheDirty =
false
;
50
return
cachedSizeHints;
51
}
52
53
void
setCachedSizeHints
(QSizeF *sizeHints)
54
{
55
for
(
int
i = 0; i < Qt::NSizeHints; ++i) {
56
cachedSizeHints[i] = sizeHints[i];
57
}
58
sizeHintCacheDirty =
false
;
59
}
60
61
void
invalidate
()
62
{
63
qCDebug(lcQuickLayouts) <<
"QQuickGridLayoutItem::invalidate()"
;
64
sizeHintCacheDirty =
true
;
65
}
66
67
QLayoutPolicy
::
Policy
sizePolicy
(Qt::Orientation orientation)
const
override
68
{
69
return
QQuickLayout::effectiveSizePolicy_helper(m_item, orientation, attachedLayoutObject(m_item,
false
));
70
}
71
72
void
setGeometry
(
const
QRectF &rect)
override
73
{
74
QQuickLayoutAttached *info = attachedLayoutObject(
m_item
,
false
);
75
const
QRectF r = info ? rect.marginsRemoved(info->effectiveQMargins()) : rect;
76
const
QSizeF oldSize(
m_item
->width(),
m_item
->height());
77
const
QSizeF newSize = r.size();
78
m_item
->setPosition(r.topLeft());
79
if
(newSize == oldSize) {
80
// We need to enforce a rearrange when the geometry is the same
81
if
(QQuickLayout *lay = qobject_cast<QQuickLayout *>(m_item)) {
82
if
(lay->invalidatedArrangement())
83
lay->rearrange(newSize);
84
}
85
}
else
{
86
m_item
->setSize(newSize);
87
}
88
}
89
90
inline
virtual
QString
toString
()
const
override
{
return
QDebug::toString(m_item); }
91
92
QQuickItem *
layoutItem
()
const
{
return
m_item
; }
93
94
QQuickItem *
m_item
;
95
private
:
96
mutable
QSizeF cachedSizeHints[
Qt
::
NSizeHints
];
97
mutable
unsigned
sizeHintCacheDirty : 1;
98
mutable
unsigned
useFallbackToWidthOrHeight : 1;
99
};
100
101
class
QQuickGridLayoutEngine
:
public
QGridLayoutEngine
{
102
public
:
103
QQuickGridLayoutEngine
() :
QGridLayoutEngine
(
Qt
::
AlignVCenter
,
true
/*snapToPixelGrid*/
) { }
104
105
int
indexOf
(QQuickItem *item)
const
{
106
for
(
int
i = 0; i < q_items.size(); ++i) {
107
if
(item ==
static_cast
<QQuickGridLayoutItem*>(q_items.at(i))->layoutItem())
108
return
i;
109
}
110
return
-1;
111
}
112
113
QQuickGridLayoutItem
*
findLayoutItem
(QQuickItem *layoutItem)
const
114
{
115
for
(
int
i = q_items.size() - 1; i >= 0; --i) {
116
QQuickGridLayoutItem
*item =
static_cast
<QQuickGridLayoutItem*>(q_items.at(i));
117
if
(item
->
layoutItem
(
)
== layoutItem)
118
return
item;
119
}
120
return
0;
121
}
122
123
void
setAlignment
(QQuickItem *quickItem, Qt::Alignment alignment);
124
125
void
setStretchFactor
(QQuickItem *quickItem,
int
stretch, Qt::Orientation orientation);
126
127
};
128
129
130
131
QT_END_NAMESPACE
132
133
#
endif
// QQUICKGRIDLAYOUTENGINE_P_H
QQuickGridLayoutEngine
Definition
qquickgridlayoutengine_p.h:101
QQuickGridLayoutEngine::QQuickGridLayoutEngine
QQuickGridLayoutEngine()
Definition
qquickgridlayoutengine_p.h:103
QQuickGridLayoutEngine::setStretchFactor
void setStretchFactor(QQuickItem *quickItem, int stretch, Qt::Orientation orientation)
Definition
qquickgridlayoutengine.cpp:19
QQuickGridLayoutEngine::setAlignment
void setAlignment(QQuickItem *quickItem, Qt::Alignment alignment)
Definition
qquickgridlayoutengine.cpp:11
QQuickGridLayoutEngine::findLayoutItem
QQuickGridLayoutItem * findLayoutItem(QQuickItem *layoutItem) const
Definition
qquickgridlayoutengine_p.h:113
QQuickGridLayoutEngine::indexOf
int indexOf(QQuickItem *item) const
Definition
qquickgridlayoutengine_p.h:105
QQuickGridLayoutItem
Definition
qquickgridlayoutengine_p.h:28
QQuickGridLayoutItem::sizePolicy
QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const override
Definition
qquickgridlayoutengine_p.h:67
QQuickGridLayoutItem::effectiveSizeHints
QSizeF * effectiveSizeHints() const
Definition
qquickgridlayoutengine_p.h:41
QQuickGridLayoutItem::QQuickGridLayoutItem
QQuickGridLayoutItem(QQuickItem *item, int row, int column, int rowSpan=1, int columnSpan=1, Qt::Alignment alignment={ })
Definition
qquickgridlayoutengine_p.h:30
QQuickGridLayoutItem::setCachedSizeHints
void setCachedSizeHints(QSizeF *sizeHints)
Definition
qquickgridlayoutengine_p.h:53
QQuickGridLayoutItem::layoutItem
QQuickItem * layoutItem() const
Definition
qquickgridlayoutengine_p.h:92
QQuickGridLayoutItem::toString
virtual QString toString() const override
Definition
qquickgridlayoutengine_p.h:90
QQuickGridLayoutItem::sizeHint
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const override
Definition
qquickgridlayoutengine_p.h:35
QQuickGridLayoutItem::setGeometry
void setGeometry(const QRectF &rect) override
Definition
qquickgridlayoutengine_p.h:72
QQuickGridLayoutItem::m_item
QQuickItem * m_item
Definition
qquickgridlayoutengine_p.h:94
QQuickGridLayoutItem::invalidate
void invalidate()
Definition
qquickgridlayoutengine_p.h:61
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtdeclarative
src
quicklayouts
qquickgridlayoutengine_p.h
Generated on
for Qt by
1.18.0