QML ToolTip 组件:图标、多行文本与阴影

ToolTip 的 contentItem 可以塞入完整布局。这篇文章做一个带图标、多行文本和阴影的富文本提示。

富文本 Tooltip

悬停在粉色矩形上,显示带图标、多行文本和阴影的 Tooltip。

演示代码

qml 复制代码
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Qt5Compat.GraphicalEffects

FadeInAnimation {
    ColumnLayout {
        anchors.fill: parent
        anchors.margins: 20
        spacing: 15

        TitleSeparator {
            title: "富文本 Tooltip"
            description: "在 contentItem 中使用布局、图标与多行文本,并为背景添加阴影效果"
        }

        RowLayout {
            Layout.preferredHeight: 120
            Layout.alignment: Qt.AlignHCenter
            spacing: 20

            Rectangle {
                Layout.preferredWidth: 120
                Layout.preferredHeight: 40
                color: "lightpink"
                radius: 4

                Text {
                    anchors.centerIn: parent
                    text: "富文本 Tooltip"
                }

                ToolTip {
                    id: richTooltip
                    delay: 500
                    timeout: 5000
                    visible: richMA.hovered

                    contentItem: ColumnLayout {
                        Text {
                            text: "富文本提示"
                            font.bold: true
                            color: "#E91E63"
                        }
                        Image {
                            Layout.preferredWidth: 32
                            Layout.preferredHeight: 32
                            source: "qrc:/qt/qml/qml_tooltip/images/info.svg"
                        }
                        Text {
                            text: "包含图标和多行文本的tooltip"
                            color: "#333333"
                        }
                    }

                    background: Rectangle {
                        color: "#FFFFFF"
                        radius: 8
                        border.color: "#E0E0E0"
                        border.width: 1

                        layer.enabled: true
                        layer.effect: DropShadow {
                            transparentBorder: true
                            horizontalOffset: 2
                            verticalOffset: 2
                            radius: 8.0
                            samples: 17
                            color: "#80000000"
                        }
                    }
                }

                HoverHandler {
                    id: richMA
                }
            }
        }

        Item { Layout.fillHeight: true }
    }
}

关键逻辑解析

  • contentItemColumnLayout 组合标题、图标和说明文字。
  • Imagesource 使用 qrc:/ 资源路径,图片需提前加入资源文件。
  • 背景通过 layer.enabled + DropShadow 实现阴影,需要导入 Qt5Compat.GraphicalEffects
  • transparentBorder: true 避免阴影被裁切。

适用场景:复杂信息提示、带图标的操作说明、卡片式浮层。

运行验证

  1. Qt Creator 打开 qml_tooltip/CMakeLists.txt
  2. Ctrl+R 运行;
  3. 悬停在粉色矩形上,观察富文本、图标和阴影效果。

扩展复用方向

  • contentItem 里加 SliderButton,做成可交互的浮层。
  • 封装成 InfoTooltip 组件,传入标题、图标、说明文字即可复用。

已验证环境

相关推荐
xcyxiner2 小时前
DicomViewer14(读取图像按固定窗宽窗位显示)
qt
马里马里奥-1 天前
从零搭建AI Agent工具链的技术文章大纲
开发语言·qt
Quz1 天前
QML 与 JavaScript 交互方式:内联函数、外部文件、信号槽与工作线程
javascript·qt
Quz1 天前
QML ToolTip 组件:延迟提示与自定义外观
qt
wWYy.1 天前
RPC详解
qt·rpc·php
Fu_Lin_1 天前
Qt嵌入式从零基础到精通(01):Qt嵌入式开发全景图:从桌面Qt到ARM Linux
linux·arm开发·qt·qt5·嵌入式linux
海清河晏1111 天前
Qt实战:从零构建美化登录界面
开发语言·c++·qt
Fu_Lin_1 天前
《Qt嵌入式从零基础到精通》前言与阅读指南
开发语言·qt
Eason_CM1 天前
QT学习教程与实战三:控件与QT Designer
c++·windows·qt·visual studio