diff options
| author | Dilek Akcay <dilek.akcay@qt.io> | 2026-09-08 15:55:03 +0200 |
|---|---|---|
| committer | Dilek Akcay <dilek.akcay@qt.io> | 2026-09-16 05:07:06 +0000 |
| commit | 0eaab825a0762b208e2ebb6349cce69ef9a863b9 (patch) | |
| tree | 5fc945163d46b12235001b89803fb908e637a505 | |
| parent | 3027a40c87ee06d201620a35b091e5ef1a7bb26a (diff) | |
StyleKit: Implement ToolTip
Pick-to: 6.12
Change-Id: I6fb24d3c8b54ce0a375150d3a3c57f7f109acb07
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| -rw-r--r-- | src/labs/stylekit/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/ToolTip.qml | 66 | ||||
| -rw-r--r-- | src/labs/stylekit/doc/snippets/ControlsSnippets.qml | 11 | ||||
| -rw-r--r-- | src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml | 9 | ||||
| -rw-r--r-- | src/labs/stylekit/impl/FallbackStyle.qml | 9 | ||||
| -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 | 3 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitreader.cpp | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitreader_p.h | 1 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekittheme.cpp | 2 |
11 files changed, 116 insertions, 1 deletions
diff --git a/src/labs/stylekit/CMakeLists.txt b/src/labs/stylekit/CMakeLists.txt index 7b60d4d624..b694b11485 100644 --- a/src/labs/stylekit/CMakeLists.txt +++ b/src/labs/stylekit/CMakeLists.txt @@ -76,6 +76,7 @@ qt_internal_add_qml_module(LabsStyleKit ToolBar.qml ToolButton.qml ToolSeparator.qml + ToolTip.qml Page.qml Pane.qml Popup.qml diff --git a/src/labs/stylekit/ToolTip.qml b/src/labs/stylekit/ToolTip.qml new file mode 100644 index 0000000000..44a9759d32 --- /dev/null +++ b/src/labs/stylekit/ToolTip.qml @@ -0,0 +1,66 @@ +// 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.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 3 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + leftPadding: styleReader.leftPadding + rightPadding: styleReader.rightPadding + topPadding: styleReader.topPadding + bottomPadding: styleReader.bottomPadding + + leftInset: styleReader.background.leftMargin + rightInset: styleReader.background.rightMargin + topInset: styleReader.background.topMargin + bottomInset: styleReader.background.bottomMargin + + spacing: styleReader.spacing + + font: styleReader.font + + StyleVariation.controlType: styleReader.controlType + StyleReader { + id: styleReader + controlType: StyleReader.ToolTip + enabled: control.enabled + focused: control.activeFocus + palette: control.palette + } + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + color: styleReader.text.color + + padding: styleReader.text.padding + leftPadding: styleReader.text.leftPadding + rightPadding: styleReader.text.rightPadding + bottomPadding: styleReader.text.bottomPadding + topPadding: styleReader.text.topPadding + verticalAlignment: styleReader.text.alignment + horizontalAlignment: styleReader.text.alignment + } + + 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 217cbb9292..38f8088068 100644 --- a/src/labs/stylekit/doc/snippets/ControlsSnippets.qml +++ b/src/labs/stylekit/doc/snippets/ControlsSnippets.qml @@ -912,6 +912,17 @@ ApplicationWindow { } //! [toolSeparator] + //! [toolTip] + toolTip { + text.padding: 2 + background { + width: 20 + height: 20 + color: "white" + } + } + //! [toolTip] + //! [theme] light: Theme { applicationWindow.background.color: "#f0f0f0" diff --git a/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml b/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml index 5ae69bb0bc..9c4277fdea 100644 --- a/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml +++ b/src/labs/stylekit/doc/snippets/ReferenceFallbackStyle.qml @@ -686,5 +686,14 @@ BaseStyle { foreground.visible: false } } + + toolTip { + text.padding: 2 + background { + width: 20 + height: 20 + color: __baseWhite + } + } } //! [1] diff --git a/src/labs/stylekit/impl/FallbackStyle.qml b/src/labs/stylekit/impl/FallbackStyle.qml index 99451cdea0..a33fc1f0e6 100644 --- a/src/labs/stylekit/impl/FallbackStyle.qml +++ b/src/labs/stylekit/impl/FallbackStyle.qml @@ -745,4 +745,13 @@ BaseStyle { } } } + + toolTip { + text.padding: 2 + background { + width: 20 + height: 20 + color: __baseWhite + } + } } diff --git a/src/labs/stylekit/qqstylekitcontrols.cpp b/src/labs/stylekit/qqstylekitcontrols.cpp index ad1a342591..ece5be7148 100644 --- a/src/labs/stylekit/qqstylekitcontrols.cpp +++ b/src/labs/stylekit/qqstylekitcontrols.cpp @@ -599,6 +599,16 @@ QT_BEGIN_NAMESPACE \snippet ControlsSnippets.qml toolSeparator */ +/*! + \qmlproperty ControlStyle AbstractStylableControls::toolTip + + Grouped property for styling \l [QtQuickControls]{ToolTip}. + + Unset properties fall back to \l popup. + + \snippet ControlsSnippets.qml toolTip +*/ + using namespace Qt::StringLiterals; QQStyleKitControls::QQStyleKitControls(QObject *parent) @@ -702,6 +712,7 @@ IMPLEMENT_ACCESSORS(textInput, QQStyleKitReader::ControlType::TextInput) IMPLEMENT_ACCESSORS(toolBar, QQStyleKitReader::ControlType::ToolBar) IMPLEMENT_ACCESSORS(toolButton, QQStyleKitReader::ControlType::ToolButton) IMPLEMENT_ACCESSORS(toolSeparator, QQStyleKitReader::ControlType::ToolSeparator) +IMPLEMENT_ACCESSORS(toolTip, QQStyleKitReader::ControlType::ToolTip) IMPLEMENT_ACCESSORS(radioButton, QQStyleKitReader::ControlType::RadioButton) IMPLEMENT_ACCESSORS(radioDelegate, QQStyleKitReader::ControlType::RadioDelegate) IMPLEMENT_ACCESSORS(roundButton, QQStyleKitReader::ControlType::RoundButton) diff --git a/src/labs/stylekit/qqstylekitcontrols_p.h b/src/labs/stylekit/qqstylekitcontrols_p.h index 792b4f4338..4e050f5b2a 100644 --- a/src/labs/stylekit/qqstylekitcontrols_p.h +++ b/src/labs/stylekit/qqstylekitcontrols_p.h @@ -58,6 +58,7 @@ class QQStyleKitControls : public QObject, public QQmlParserStatus Q_PROPERTY(QQStyleKitControl *toolBar READ toolBar WRITE set_toolBar NOTIFY toolBarChanged FINAL) Q_PROPERTY(QQStyleKitControl *toolButton READ toolButton WRITE set_toolButton NOTIFY toolButtonChanged FINAL) Q_PROPERTY(QQStyleKitControl *toolSeparator READ toolSeparator WRITE set_toolSeparator NOTIFY toolSeparatorChanged FINAL) + Q_PROPERTY(QQStyleKitControl *toolTip READ toolTip WRITE set_toolTip NOTIFY toolTipChanged FINAL) Q_PROPERTY(QQStyleKitControl *swipeDelegate READ swipeDelegate WRITE set_swipeDelegate NOTIFY swipeDelegateChanged FINAL) Q_PROPERTY(QQStyleKitControl *switchControl READ switchControl WRITE set_switchControl NOTIFY switchControlChanged FINAL) Q_PROPERTY(QQStyleKitControl *switchDelegate READ switchDelegate WRITE set_switchDelegate NOTIFY switchDelegateChanged FINAL) @@ -118,6 +119,7 @@ public: IMPLEMENT_ACCESSORS(toolBar) IMPLEMENT_ACCESSORS(toolButton) IMPLEMENT_ACCESSORS(toolSeparator) + IMPLEMENT_ACCESSORS(toolTip) IMPLEMENT_ACCESSORS(swipeDelegate) IMPLEMENT_ACCESSORS(switchControl) IMPLEMENT_ACCESSORS(switchDelegate) @@ -175,6 +177,7 @@ signals: void toolBarChanged(); void toolButtonChanged(); void toolSeparatorChanged(); + void toolTipChanged(); void swipeDelegateChanged(); void switchControlChanged(); void switchDelegateChanged(); diff --git a/src/labs/stylekit/qqstylekitpropertyresolver.cpp b/src/labs/stylekit/qqstylekitpropertyresolver.cpp index 66e6abfd0f..020febcd64 100644 --- a/src/labs/stylekit/qqstylekitpropertyresolver.cpp +++ b/src/labs/stylekit/qqstylekitpropertyresolver.cpp @@ -69,8 +69,9 @@ const QList<QQStyleKitExtendableControlType> QQStyleKitPropertyResolver::baseTyp static QList<QQStyleKitExtendableControlType> t = { QQStyleKitReader::ItemDelegate, QQStyleKitReader::Control }; return t; } + case QQStyleKitReader::Dialog: case QQStyleKitReader::Menu: - case QQStyleKitReader::Dialog: { + case QQStyleKitReader::ToolTip: { static QList<QQStyleKitExtendableControlType> t = { QQStyleKitReader::Popup, QQStyleKitReader::Control }; return t; } diff --git a/src/labs/stylekit/qqstylekitreader.cpp b/src/labs/stylekit/qqstylekitreader.cpp index 2ae13093a5..b6dc6f8e70 100644 --- a/src/labs/stylekit/qqstylekitreader.cpp +++ b/src/labs/stylekit/qqstylekitreader.cpp @@ -103,6 +103,7 @@ QT_BEGIN_NAMESPACE \value StyleReader.ToolBar \l {ToolBar} \value StyleReader.ToolButton \l {ToolButton} \value StyleReader.ToolSeparator \l {ToolSeparator} + \value StyleReader.ToolTip \l {ToolTip} \sa {StyleVariation::controlType}{StyleVariation.controlType} */ diff --git a/src/labs/stylekit/qqstylekitreader_p.h b/src/labs/stylekit/qqstylekitreader_p.h index 660a77f852..c0714efffe 100644 --- a/src/labs/stylekit/qqstylekitreader_p.h +++ b/src/labs/stylekit/qqstylekitreader_p.h @@ -83,6 +83,7 @@ public: ToolBar, ToolButton, ToolSeparator, + ToolTip, RadioButton, RadioDelegate, RoundButton, diff --git a/src/labs/stylekit/qqstylekittheme.cpp b/src/labs/stylekit/qqstylekittheme.cpp index d97222bfab..f398a7d8b7 100644 --- a/src/labs/stylekit/qqstylekittheme.cpp +++ b/src/labs/stylekit/qqstylekittheme.cpp @@ -96,6 +96,8 @@ static QQuickTheme::Scope scopeForType(QQStyleKitExtendableControlType type) case QQStyleKitReader::ControlType::ToolButton: case QQStyleKitReader::ControlType::ToolSeparator: return QQuickTheme::ToolBar; + case QQStyleKitReader::ControlType::ToolTip: + return QQuickTheme::ToolTip; default: return QQuickTheme::System; } |
