diff options
| author | Dilek Akcay <dilek.akcay@qt.io> | 2026-09-17 16:00:31 +0200 |
|---|---|---|
| committer | Dilek Akcay <dilek.akcay@qt.io> | 2026-09-25 13:41:17 +0000 |
| commit | 25e8fcab85180ad0c06b191a22d72c1de285a549 (patch) | |
| tree | 3b1c6e3c97acba2b7f912b8c41fa6509ca946c1f | |
| parent | 937b1229045f294ec8c4528578bcbe1d5d5d5aa9 (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.txt | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/Drawer.qml | 60 | ||||
| -rw-r--r-- | src/labs/stylekit/doc/snippets/ControlsSnippets.qml | 6 | ||||
| -rw-r--r-- | src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml | 4 | ||||
| -rw-r--r-- | src/labs/stylekit/impl/FallbackStyle.qml | 4 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitcontrols.cpp | 11 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitcontrols_p.h | 3 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitpropertyresolver.cpp | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitreader.cpp | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitreader_p.h | 1 |
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, |
