在开发现代图形用户界面时,用户体验(UX)是至关重要的一部分。用户有时可能需要一些帮助或提示来了解界面元素的功能,而 QToolTip
提供了一种简单、直观的方式来解决这一问题。
源码工程下载
通过网盘分享的文件:悬浮窗的使用
链接: https://pan.baidu.com/s/1MnWyH3CNkw6p9vvG7Ap6Wg?pwd=jkcf 提取码: jkcf
1. 什么是 QToolTip
?
QToolTip
是 Qt 框架中提供的一个控件,主要用于显示小的、临时的提示信息,通常出现在用户将鼠标悬停在某个控件上时。它们的作用是给用户提供简洁、清晰的反馈,帮助他们理解控件的用途。常见的应用场景包括按钮的描述、功能说明等。
在 Qt 中,QToolTip
是一个静态类,不需要实例化对象。我们只需调用其静态方法来显示提示框。
2. 基本用法
QToolTip
的最基本用法是通过 QToolTip::showText()
方法显示提示信息。这个方法需要三个参数:
- 显示位置:提示框的位置,通常使用控件的坐标来确定。
- 显示内容:提示框内要显示的文本。
- 父控件:指定哪个控件触发了提示框的显示。
举个例子,当鼠标悬停在一个按钮上时,显示该按钮的功能描述。我们可以使用如下代码:
QToolTip::showText(button->mapToGlobal(QPoint(0, -30)), "这是一个按钮", button);
这行代码的作用是:
button->mapToGlobal(QPoint(0, -30))
:将按钮的位置转换为全局坐标,并把提示框显示在按钮上方 30 像素的位置。"这是一个按钮"
:显示的提示信息内容。button
:指定这个提示框的父控件。
3. 通过点击事件触发 QToolTip
通常情况下,QToolTip
是在用户将鼠标悬停在控件上时触发的,但它也可以通过其他事件(如按钮点击)来触发。在我们的示例中,我们通过按钮的点击事件来展示不同的诗句。
connect(button1, &QPushButton::clicked, [this]() {
QString poem = "床前明月光,疑是地上霜。\n举头望明月,低头思故乡。";
QToolTip::showText(button1->mapToGlobal(QPoint(0, -30)), poem, button1);
});
这里,我们为 button1
设置了一个点击事件。当用户点击按钮时,QToolTip
会显示《静夜思》的诗句。
4. 多个按钮显示不同的提示
为了更好地展示 QToolTip
的应用,假设我们有多个按钮,每个按钮点击时显示不同的提示信息。例如,按钮1显示李白的《静夜思》,按钮2显示王之涣的《登鹳雀楼》,按钮3显示孟浩然的《春晓》。
下面是完整的代码:
button1 = new QPushButton("静夜思", this); // 李白的《静夜思》
button1->setGeometry(100, 100, 100, 50);
button2 = new QPushButton("登鹳雀楼", this); // 王之涣的《登鹳雀楼》
button2->setGeometry(100, 160, 100, 50);
button3 = new QPushButton("春晓", this); // 孟浩然的《春晓》
button3->setGeometry(100, 220, 100, 50);
connect(button1, &QPushButton::clicked, [this]() {
QString poem = "床前明月光,疑是地上霜。\n举头望明月,低头思故乡。";
QToolTip::showText(button1->mapToGlobal(QPoint(0, -30)), poem, button1);
});
connect(button2, &QPushButton::clicked, [this]() {
QString poem = "白日依山尽,黄河入海流。\n欲穷千里目,更上一层楼。";
QToolTip::showText(button2->mapToGlobal(QPoint(0, -30)), poem, button2);
});
connect(button3, &QPushButton::clicked, [this]() {
QString poem = "春眠不觉晓,处处闻啼鸟。\n夜来风雨声,花落知多少。";
QToolTip::showText(button3->mapToGlobal(QPoint(0, -30)), poem, button3);
});
在这个例子中,我们为每个按钮设置了不同的诗句。当按钮被点击时,相应的诗句将会显示在按钮上方的悬浮框中。
5. 自定义 QToolTip
的外观
QToolTip
提供了一些自定义选项,比如修改字体、背景色等。例如,我们可以通过设置字体来改变提示框的文字大小:
QFont font = QToolTip::font();
font.setPointSize(12); // 设置字体大小为12
QToolTip::setFont(font); // 应用新的字体
还可以使用 Qt 样式表(QSS)来修改提示框的外观:
QToolTip::setStyleSheet("QToolTip { background-color: yellow; color: black; border: 1px solid black; }");
这将把所有 QToolTip
提示框的背景色设置为黄色,文字颜色设置为黑色,边框为黑色。
6. 控制 QToolTip
的显示延迟
QToolTip
还允许你自定义显示的延迟时间。默认情况下,提示框会在鼠标悬停几百毫秒后自动显示。你可以使用以下方法来更改显示延迟:
QToolTip::setDelay(1000); // 设置延迟时间为1000毫秒(1秒)
这意味着,提示框将在用户悬停1秒后才会显示,而不是立即显示。