aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDilek Akcay <dilek.akcay@qt.io>2026-09-17 16:00:31 +0200
committerDilek Akcay <dilek.akcay@qt.io>2026-09-25 13:41:17 +0000
commit25e8fcab85180ad0c06b191a22d72c1de285a549 (patch)
tree3b1c6e3c97acba2b7f912b8c41fa6509ca946c1f
parent937b1229045f294ec8c4528578bcbe1d5d5d5aa9 (diff)
StyleKit: Implement Drawer
Pick-to: 6.12 Change-Id: Ia2662a993a563b4ff5f518a71e6e34bf85dab93f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
-rw-r--r--src/labs/stylekit/CMakeLists.txt1
-rw-r--r--src/labs/stylekit/Drawer.qml60
-rw-r--r--src/labs/stylekit/doc/snippets/ControlsSnippets.qml6
-rw-r--r--src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml4
-rw-r--r--src/labs/stylekit/impl/FallbackStyle.qml4
-rw-r--r--src/labs/stylekit/qqstylekitcontrols.cpp11
-rw-r--r--src/labs/stylekit/qqstylekitcontrols_p.h3
-rw-r--r--src/labs/stylekit/qqstylekitpropertyresolver.cpp1
-rw-r--r--src/labs/stylekit/qqstylekitreader.cpp1
-rw-r--r--src/labs/stylekit/qqstylekitreader_p.h1
10 files changed, 92 insertions, 0 deletions
diff --git a/src/labs/stylekit/CMakeLists.txt b/src/labs/stylekit/CMakeLists.txt
index b694b11485..7594c90ccc 100644
--- a/src/labs/stylekit/CMakeLists.txt
+++ b/src/labs/stylekit/CMakeLists.txt
@@ -46,6 +46,7 @@ qt_internal_add_qml_module(LabsStyleKit
Dial.qml
Dialog.qml
DialogButtonBox.qml
+ Drawer.qml
Frame.qml
ItemDelegate.qml
Menu.qml
diff --git a/src/labs/stylekit/Drawer.qml b/src/labs/stylekit/Drawer.qml
new file mode 100644
index 0000000000..9d4c8fcfef
--- /dev/null
+++ b/src/labs/stylekit/Drawer.qml
@@ -0,0 +1,60 @@
+// Copyright (C) 2026 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
+
+import QtQuick
+import QtQuick.Controls.impl
+import QtQuick.Templates as T
+import Qt.labs.StyleKit
+import Qt.labs.StyleKit.impl
+
+T.Drawer {
+ id: control
+
+ parent: T.Overlay.overlay
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ leftPadding: styleReader.leftPadding + SafeArea.margins.left + (control.edge === Qt.RightEdge)
+ rightPadding: styleReader.rightPadding + SafeArea.margins.right + (control.edge === Qt.LeftEdge)
+ topPadding: styleReader.topPadding + SafeArea.margins.top + (control.edge === Qt.BottomEdge)
+ bottomPadding: styleReader.bottomPadding + SafeArea.margins.bottom + (control.edge === Qt.TopEdge)
+
+ leftInset: styleReader.background.leftMargin
+ topInset: styleReader.background.topMargin
+ rightInset: styleReader.background.rightMargin
+ bottomInset: styleReader.background.bottomMargin
+
+ spacing: styleReader.spacing
+
+ font: styleReader.font
+
+ StyleVariation.controlType: styleReader.controlType
+ StyleReader {
+ id: styleReader
+ controlType: StyleReader.Drawer
+ enabled: control.enabled
+ focused: control.activeFocus
+ palette: control.palette
+ }
+
+ enter: Transition {
+ SmoothedAnimation {
+ velocity: 5
+ }
+ }
+
+ exit: Transition {
+ SmoothedAnimation {
+ velocity: 5
+ }
+ }
+
+ background: BackgroundDelegate {
+ quickControl: control
+ backgroundStyle: styleReader.background
+ }
+}
diff --git a/src/labs/stylekit/doc/snippets/ControlsSnippets.qml b/src/labs/stylekit/doc/snippets/ControlsSnippets.qml
index 38f8088068..db52050d4a 100644
--- a/src/labs/stylekit/doc/snippets/ControlsSnippets.qml
+++ b/src/labs/stylekit/doc/snippets/ControlsSnippets.qml
@@ -247,6 +247,12 @@ ApplicationWindow {
}
//! [dialogButtonBox]
+ //! [drawer]
+ drawer {
+ background.color: "white"
+ }
+ //! [drawer]
+
//! [flatButton]
flatButton {
// Hide background normally, show on hover
diff --git a/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml b/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml
index 9c4277fdea..009dc95fc8 100644
--- a/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml
+++ b/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml
@@ -230,6 +230,10 @@ BaseStyle {
}
}
+ drawer {
+ background.color: __baseWhite
+ }
+
flatButton {
background.visible: false
hovered.background.visible: true
diff --git a/src/labs/stylekit/impl/FallbackStyle.qml b/src/labs/stylekit/impl/FallbackStyle.qml
index a33fc1f0e6..48182eb416 100644
--- a/src/labs/stylekit/impl/FallbackStyle.qml
+++ b/src/labs/stylekit/impl/FallbackStyle.qml
@@ -232,6 +232,10 @@ BaseStyle {
}
}
+ drawer {
+ background.color: __baseWhite
+ }
+
flatButton {
background.visible: false
hovered.background.visible: true
diff --git a/src/labs/stylekit/qqstylekitcontrols.cpp b/src/labs/stylekit/qqstylekitcontrols.cpp
index ece5be7148..28adc23329 100644
--- a/src/labs/stylekit/qqstylekitcontrols.cpp
+++ b/src/labs/stylekit/qqstylekitcontrols.cpp
@@ -186,6 +186,16 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \qmlproperty ControlStyle StylableControls::drawer
+
+ Grouped property for styling \l [QtQuickControls]{Drawer}.
+
+ Unset properties fall back to \l popup.
+
+ \snippet ControlsSnippets.qml drawer
+*/
+
+/*!
\qmlproperty ControlStyle StylableControls::flatButton
Grouped property for styling flat buttons (buttons with no visible
@@ -695,6 +705,7 @@ IMPLEMENT_ACCESSORS(delayButton, QQStyleKitReader::ControlType::DelayButton)
IMPLEMENT_ACCESSORS(dial, QQStyleKitReader::ControlType::Dial)
IMPLEMENT_ACCESSORS(dialog, QQStyleKitReader::ControlType::Dialog)
IMPLEMENT_ACCESSORS(dialogButtonBox, QQStyleKitReader::ControlType::DialogButtonBox)
+IMPLEMENT_ACCESSORS(drawer, QQStyleKitReader::ControlType::Drawer)
IMPLEMENT_ACCESSORS(progressBar, QQStyleKitReader::ControlType::ProgressBar)
IMPLEMENT_ACCESSORS(scrollBar, QQStyleKitReader::ControlType::ScrollBar)
IMPLEMENT_ACCESSORS(scrollIndicator, QQStyleKitReader::ControlType::ScrollIndicator)
diff --git a/src/labs/stylekit/qqstylekitcontrols_p.h b/src/labs/stylekit/qqstylekitcontrols_p.h
index 4e050f5b2a..f83c5b0c29 100644
--- a/src/labs/stylekit/qqstylekitcontrols_p.h
+++ b/src/labs/stylekit/qqstylekitcontrols_p.h
@@ -43,6 +43,7 @@ class QQStyleKitControls : public QObject, public QQmlParserStatus
Q_PROPERTY(QQStyleKitControl *dial READ dial WRITE set_dial NOTIFY dialChanged FINAL)
Q_PROPERTY(QQStyleKitControl *dialog READ dialog WRITE set_dialog NOTIFY dialogChanged FINAL)
Q_PROPERTY(QQStyleKitControl *dialogButtonBox READ dialogButtonBox WRITE set_dialogButtonBox NOTIFY dialogButtonBoxChanged FINAL)
+ Q_PROPERTY(QQStyleKitControl *drawer READ drawer WRITE set_drawer NOTIFY drawerChanged FINAL)
Q_PROPERTY(QQStyleKitControl *flatButton READ flatButton WRITE set_flatButton NOTIFY flatButtonChanged FINAL)
Q_PROPERTY(QQStyleKitControl *progressBar READ progressBar WRITE set_progressBar NOTIFY progressBarChanged FINAL)
Q_PROPERTY(QQStyleKitControl *scrollBar READ scrollBar WRITE set_scrollBar NOTIFY scrollBarChanged FINAL)
@@ -104,6 +105,7 @@ public:
IMPLEMENT_ACCESSORS(dial)
IMPLEMENT_ACCESSORS(dialog)
IMPLEMENT_ACCESSORS(dialogButtonBox)
+ IMPLEMENT_ACCESSORS(drawer)
IMPLEMENT_ACCESSORS(flatButton)
IMPLEMENT_ACCESSORS(progressBar)
IMPLEMENT_ACCESSORS(scrollBar)
@@ -162,6 +164,7 @@ signals:
void dialChanged();
void dialogChanged();
void dialogButtonBoxChanged();
+ void drawerChanged();
void flatButtonChanged();
void progressBarChanged();
void scrollBarChanged();
diff --git a/src/labs/stylekit/qqstylekitpropertyresolver.cpp b/src/labs/stylekit/qqstylekitpropertyresolver.cpp
index 020febcd64..4ffb0cc060 100644
--- a/src/labs/stylekit/qqstylekitpropertyresolver.cpp
+++ b/src/labs/stylekit/qqstylekitpropertyresolver.cpp
@@ -70,6 +70,7 @@ const QList<QQStyleKitExtendableControlType> QQStyleKitPropertyResolver::baseTyp
{ QQStyleKitReader::ItemDelegate, QQStyleKitReader::Control };
return t; }
case QQStyleKitReader::Dialog:
+ case QQStyleKitReader::Drawer:
case QQStyleKitReader::Menu:
case QQStyleKitReader::ToolTip: {
static QList<QQStyleKitExtendableControlType> t =
diff --git a/src/labs/stylekit/qqstylekitreader.cpp b/src/labs/stylekit/qqstylekitreader.cpp
index b6dc6f8e70..d8858d3e9d 100644
--- a/src/labs/stylekit/qqstylekitreader.cpp
+++ b/src/labs/stylekit/qqstylekitreader.cpp
@@ -71,6 +71,7 @@ QT_BEGIN_NAMESPACE
\value StyleReader.Dial \l {Dial}
\value StyleReader.Dialog \l {Dialog}
\value StyleReader.DialogButtonBox \l {DialogButtonBox}
+ \value StyleReader.Drawer \l {Drawer}
\value StyleReader.Frame \l {Frame}
\value StyleReader.GroupBox \l {GroupBox}
\value StyleReader.ItemDelegate \l {ItemDelegate}
diff --git a/src/labs/stylekit/qqstylekitreader_p.h b/src/labs/stylekit/qqstylekitreader_p.h
index c0714efffe..b40afebf9b 100644
--- a/src/labs/stylekit/qqstylekitreader_p.h
+++ b/src/labs/stylekit/qqstylekitreader_p.h
@@ -64,6 +64,7 @@ public:
Dial,
Dialog,
DialogButtonBox,
+ Drawer,
FlatButton,
ProgressBar,
ScrollBar,