4pragma ComponentBehavior: Bound
51 Accessible.role: Accessible.ToolBar
52 Accessible.name: title
53 Accessible.description: subtitle
80 property int variant: AppBar.Small
86 property string subtitle
89 property int titleAlignment: AppBar.Start
97 property int titleMaximumLineCount: variant === AppBar.Small ? 1 : 2
104 property int subtitleMaximumLineCount: 1
107 property real _expandedTextHeight: 0
110 property real _titleImplicitWidth: 0
113 readonly property bool _centeredTitle: titleAlignment !== 0
116 readonly property bool _hasSubtitle: subtitle.length > 0
119 readonly property real _tokenExpandedHeight: {
121 case AppBar.MediumFlexible:
122 return _hasSubtitle ? MD.Tokens.appBar.mediumFlexibleContainerHeightWithSubtitle : MD.Tokens.appBar.mediumFlexibleContainerHeight;
123 case AppBar.LargeFlexible:
126 return collapsedHeight;
131 readonly
property real _expandedTitleLineHeight: variant ===
AppBar.LargeFlexible ? MD.Tokens.typescale.displaySmall.lineHeight : MD.Tokens.typescale.headlineMedium.lineHeight
134 readonly
property real _expandedSubtitleLineHeight: _hasSubtitle ? (variant ===
AppBar.LargeFlexible ? MD.Tokens.typescale.titleMedium.lineHeight : MD.Tokens.typescale.labelLarge.lineHeight) : 0
137 readonly property real _expandedGap: _hasSubtitle ? (variant ===
AppBar.LargeFlexible ? MD.
Tokens.appBar.largeTitleSubtitleGap : MD.
Tokens.appBar.mediumTitleSubtitleGap) : 0
140 readonly property real _defaultExpandedTextHeight: _expandedTitleLineHeight + _expandedGap + _expandedSubtitleLineHeight
143 readonly property real _bottomPadding: variant ===
AppBar.LargeFlexible ? MD.
Tokens.appBar.largeTitleBottomPadding : MD.
Tokens.appBar.mediumTitleBottomPadding
145 collapsedHeight: MD.
Tokens.appBar.smallContainerHeight
146 expandedHeight: variant ===
AppBar.Small ? collapsedHeight : _tokenExpandedHeight + Math.max(0, _expandedTextHeight - _defaultExpandedTextHeight)
147 scrollBehavior: variant ===
AppBar.Small ? MD.BaseAppBar.Pinned : MD.BaseAppBar.ExitUntilCollapsed
148 minimumCenterWidth: Math.max(MD.
Tokens.appBar.titleInset * 2, Math.min(barContentWidth, _titleImplicitWidth + MD.
Tokens.appBar.titleInset * 2))
150 centerContent: Component {
153 objectName:
"titleArea"
155 readonly property real fraction: control.variant ===
AppBar.Small ? 1 : control.collapsedFraction
156 readonly property bool collapsedTypography: fraction >= 0.5
157 readonly property real physicalLeadingWidth: control.layoutMirrored ? control.trailingWidth : control.leadingWidth
158 readonly property real physicalTrailingWidth: control.layoutMirrored ? control.leadingWidth : control.trailingWidth
159 readonly property real collapsedSide: Math.max(physicalLeadingWidth, physicalTrailingWidth) + MD.
Tokens.appBar.titleInset
160 readonly property real collapsedStartX: control._centeredTitle ? collapsedSide : physicalLeadingWidth + MD.
Tokens.appBar.titleInset
161 readonly property real collapsedEndX: control._centeredTitle ? width - collapsedSide : width - physicalTrailingWidth - MD.
Tokens.appBar.titleInset
162 readonly property real expandedStartX: MD.
Tokens.appBar.titleInset
163 readonly property real expandedEndX: width - MD.
Tokens.appBar.titleInset
164 readonly property real targetStartX: expandedStartX + (collapsedStartX - expandedStartX) * fraction
165 readonly property real targetEndX: expandedEndX + (collapsedEndX - expandedEndX) * fraction
166 readonly property real collapsedY: (control.collapsedHeight - titleColumn.implicitHeight) / 2
167 readonly property real expandedY: control.currentContainerHeight - control._bottomPadding - titleColumn.implicitHeight
174 id: expandedTitleMetrics
177 width: Math.max(0, titleArea.width - MD.
Tokens.appBar.titleInset * 2)
179 typescale: control.variant ===
AppBar.LargeFlexible ? MD.
Tokens.typescale.displaySmall : MD.
Tokens.typescale.headlineMedium
180 maximumLineCount: Math.max(1, control.titleMaximumLineCount)
182 elide: Text.ElideRight
183 Accessible.ignored: true
187 id: expandedSubtitleMetrics
190 width: expandedTitleMetrics.width
191 text: control.subtitle
192 typescale: control.variant ===
AppBar.LargeFlexible ? MD.
Tokens.typescale.titleMedium : MD.
Tokens.typescale.labelLarge
193 maximumLineCount: Math.max(1, control.subtitleMaximumLineCount)
195 elide: Text.ElideRight
196 Accessible.ignored: true
201 property:
"_expandedTextHeight"
202 value: expandedTitleMetrics.implicitHeight + (control._hasSubtitle ? control._expandedGap + expandedSubtitleMetrics.implicitHeight : 0)
207 property:
"_titleImplicitWidth"
208 value: titleLabel.implicitWidth
214 x: titleArea.targetStartX
215 y: titleArea.expandedY + (titleArea.collapsedY - titleArea.expandedY) * titleArea.fraction
216 width: Math.max(0, titleArea.targetEndX - titleArea.targetStartX)
217 spacing: control._hasSubtitle ? (titleArea.collapsedTypography ? MD.
Tokens.appBar.mediumTitleSubtitleGap : control._expandedGap) : 0
221 objectName:
"titleLabel"
225 color: control.titleColor
226 typescale: titleArea.collapsedTypography ? MD.
Tokens.typescale.titleLarge : control.variant ===
AppBar.LargeFlexible ? MD.
Tokens.typescale.displaySmall : MD.
Tokens.typescale.headlineMedium
227 maximumLineCount: titleArea.collapsedTypography ? 1 : Math.max(1, control.titleMaximumLineCount)
229 elide: Text.ElideRight
230 horizontalAlignment: control._centeredTitle ? Text.AlignHCenter : control.layoutMirrored ? Text.AlignRight : Text.AlignLeft
231 Accessible.ignored: true
237 objectName:
"subtitleLabel"
238 text: control.subtitle
239 color: control.subtitleColor
240 typescale: titleArea.collapsedTypography ? MD.
Tokens.typescale.labelMedium : control.variant ===
AppBar.LargeFlexible ? MD.
Tokens.typescale.titleMedium : MD.
Tokens.typescale.labelLarge
241 maximumLineCount: titleArea.collapsedTypography ? 1 : Math.max(1, control.subtitleMaximumLineCount)
243 elide: Text.ElideRight
244 horizontalAlignment: control._centeredTitle ? Text.AlignHCenter : control.layoutMirrored ? Text.AlignRight : Text.AlignLeft
245 visible: control._hasSubtitle
246 Accessible.ignored: true
Material Design 3 design tokens.
Displays text using a selectable Material 3 type scale.
qreal largeFlexibleContainerHeightWithSubtitle READ largeFlexibleContainerHeightWithSubtitle