qt中鼠标悬浮在控件上展示信息
时间: 2023-12-30 16:04:39 浏览: 27
在 Qt 中,可以通过重写控件的 `enterEvent` 和 `leaveEvent` 事件来实现鼠标悬浮在控件上展示信息的功能。具体步骤如下:
1. 在控件的头文件中声明 `enterEvent` 和 `leaveEvent` 事件:
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
protected:
void enterEvent(QEvent *event) override;
void leaveEvent(QEvent *event) override;
};
```
2. 在实现文件中重写 `enterEvent` 和 `leaveEvent` 事件,实现鼠标悬浮时展示信息的功能:
```cpp
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
// 设置控件的提示信息
setToolTip("Hello, world!");
}
void MyWidget::enterEvent(QEvent *event)
{
// 鼠标进入控件时,显示控件的提示信息
QToolTip::showText(mapToGlobal(QPoint(0, height())), toolTip());
}
void MyWidget::leaveEvent(QEvent *event)
{
// 鼠标离开控件时,隐藏控件的提示信息
QToolTip::hideText();
}
```
在上述代码中,`setToolTip` 方法用于设置控件的提示信息。在 `enterEvent` 事件中,调用 `QToolTip::showText` 方法显示控件的提示信息,并通过 `mapToGlobal` 方法将控件坐标转换为全局坐标,以确保提示信息显示在鼠标下方。在 `leaveEvent` 事件中,调用 `QToolTip::hideText` 方法隐藏控件的提示信息。
阅读全文