> 文章列表 > Qt Quick - ToolTip

Qt Quick - ToolTip

嘿,你有没有想过,那些小小的ToolTip(就是那些鼠标一放上去就弹出的提示框)其实背后藏着不少学问?它们看似简单,但实际上在设计和使用时有很多细节需要考虑。比如,ToolTip的显示和隐藏时间如何控制?如何让它在不同设备上有不同的响应方式?这些问题看似琐碎,但却能直接影响用户体验。

先说说ToolTip的显示机制吧。你知道吗,ToolTip通常是通过延迟和超时来实现的。比如在触摸屏上,你可以设置长按按钮后才显示ToolTip,而鼠标设备则可以在悬停一段时间后显示。这种方式不仅节省资源,还能避免用户界面过于杂乱。就像你在使用某个按钮时,ToolTip不会立刻跳出来“骚扰”你,而是等你真正需要时再出现,这种设计是不是很贴心?

再聊聊自定义ToolTip。如果你觉得默认的ToolTip不够酷,完全可以自己动手定制!比如,你可以改变它的颜色、字体,甚至让它显示动态内容。想象一下,当用户拖动一个滑块时,ToolTip能实时显示当前数值,这样的交互是不是特别直观?这种定制化不仅让界面更美观,也让功能更强大。

所以说,ToolTip虽然小,但它背后的设计和实现却能大有文章。下次当你看到一个ToolTip时,不妨想想它是如何为你提供帮助的,或许你还能从中获得一些设计灵感呢!

Qt Quick - ToolTip

Qt Quick - ToolTip使用总结

  • 一、概述
  • 二、附带的ToolTip
  • 三、延迟和超时
  • 四、自定义ToolTip
  • 五、定制化

一、概述

ToolTip 其实就是ToolTip,所谓ToolTip其实就是一段简短的文本,告知用户控件的功能。它通常置于父控件之上或之下。提示文本可以是任何富文本格式的字符串。这个一般是很细节的东西。
Qt Quick - ToolTip

二、附带的ToolTip

ToolTip 为控件设置ToolTip最直接的方法是通过附加属性指定 文本和 可见性。下面的例子演示了鼠标移到按钮里面,这个ToolTip显示的这种方法:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.5Window {id: windowvisible: truewidth: 640height: 480title: qsTr("Hello World")Button {text: qsTr("保存")anchors.horizontalCenter: parent.horizontalCenteranchors.verticalCenter: parent.verticalCenter//这个 hovered 其实是这个Button的一些属性ToolTip.visible: hoveredToolTip.text: qsTr("保存这个项目")}}

在正常情况下,一次只能看到一个ToolTip。为了节省资源,所有使用ToolTip附加属性的项目共享相同的可视化ToolTip标签实例。这个意思就是说每一个控件都可以设置 ToolTip

尽管视觉效果是共享的,但文本、超时和延迟是单独存储的,每个项目都使用各自的附加属性。但是,多个项目不能使共享ToolTip同时可见。共享ToolTip只显示在使其可见的最后一项上。共享ToolTip的位置由框架决定。

三、延迟和超时

ToolTip通常是短暂的,因为它们是在某个外部事件或用户交互后显示的,通常在某个超时后隐藏。在显示ToolTip时可以控制延迟,在隐藏ToolTip时可以控制超时。这使得实现显示和隐藏ToolTip的不同策略成为可能。
例如,在触摸屏上,按下并按住按钮显示ToolTip是一种常见的模式。下面的示例演示了如何延迟显示ToolTip,直到达到按下并保持的间隔。在这个例子中,按钮一松开,ToolTip就会隐藏。

Button {text: qsTr("Button")ToolTip.visible: pressedToolTip.delay: Qt.styleHints.mousePressAndHoldIntervalToolTip.text: qsTr("This tool tip is shown after pressing and holding the button down.")}

然而,对于指针设备,可能需要显示一个ToolTip,作为鼠标悬停按钮一段时间的结果。下面的示例演示如何在将按钮悬停一秒钟后显示ToolTip,并在超时五秒钟后隐藏它。

 Button {text: qsTr("Button")hoverEnabled: trueToolTip.delay: 1000ToolTip.timeout: 5000ToolTip.visible: hoveredToolTip.text: qsTr("This tool tip is shown after hovering the button for a second.")}

四、自定义ToolTip

如果需要对ToolTip位置进行更细粒度的控制,或者需要同时创建多个ToolTip实例,也可以创建本地ToolTip实例。这样,就可以自定义ToolTip,并且整个弹出式API都是可用的。下面的示例提供了一个ToolTip,在拖动手柄时显示滑块的值。
Qt Quick - ToolTip

  Slider {id: slidervalue: 0.5ToolTip {parent: slider.handlevisible: slider.pressedtext: slider.value.toFixed(1)}}

五、定制化

Qt Quick - ToolTip
ToolTip可以设置contentItem 和

  ToolTip {id: controltext: qsTr("A descriptive tool tip of what the button does")contentItem: Text {text: control.textfont: control.fontcolor: "#21be2b"}background: Rectangle {border.color: "#21be2b"}}
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick