本文主要是介绍C++Qt做一个鼠标在按钮上悬浮3s显示一个悬浮窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当你想要在 Qt 中创建一个自定义按钮并添加悬浮窗口的功能时,你可以通过继承 QPushButton 类来实现。下面是一个示例代码,演示了如何创建一个自定义按钮类 HoverButton,并在鼠标悬浮在按钮上 3 秒后显示一个悬浮窗口,窗口包含图片和文字。
#include <QPushButton>
#include <QTimer>
#include <QMouseEvent>
#include <QToolTip>
#include <QHBoxLayout>
#include <QLabel>
#include <QPixmap>class HoverWindow : public QWidget {
public:HoverWindow(QWidget *parent = nullptr) : QWidget(parent) {// 创建悬浮窗口setWindowFlags(Qt::ToolTip);setLayout(new QHBoxLayout);// 添加图片QPixmap image("path_to_image.jpg"); // 替换为你的图片路径QLabel *imageLabel = new QLabel;imageLabel->setPixmap(image);layout()->addWidget(imageLabel);// 添加文字QLabel *textLabel = new QLabel("Your text here");layout()->addWidget(textLabel);}
};class HoverButton : public QPushButton {Q_OBJECT
public:HoverButton(QWidget *parent = nullptr) : QPushButton(parent) {// 创建悬浮窗口hoverWindow = new HoverWindow(parent);// 创建定时器hoverTimer = new QTimer(this);hoverTimer->setInterval(3000); // 设置定时器间隔为3秒hoverTimer->setSingleShot(true); // 设置定时器为单次触发connect(hoverTimer, &QTimer::timeout, this, &HoverButton::showHoverWindow);}protected:void enterEvent(QEvent *event) override {// 鼠标悬浮在按钮上时启动定时器hoverTimer->start();QPushButton::enterEvent(event);}void leaveEvent(QEvent *event) override {// 鼠标离开按钮时停止定时器hoverTimer->stop();QPushButton::leaveEvent(event);}private slots:void showHoverWindow() {// 显示悬浮窗口QPoint globalPos = mapToGlobal(QPoint(0, height()));hoverWindow->move(globalPos);hoverWindow->show();}private:QTimer *hoverTimer;HoverWindow *hoverWindow;
};
在这个示例中,我们创建了一个名为 HoverButton 的自定义按钮类,继承自 QPushButton。在这个自定义按钮类中,我们重写了 enterEvent 和 leaveEvent 事件处理函数,以便在鼠标悬浮和离开按钮时启动和停止定时器。当定时器超时时,会显示悬浮窗口。
请替换示例中的 “path_to_image.jpg” 为你实际的图片路径,并根据你的实际需求修改代码。
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt
这篇关于C++Qt做一个鼠标在按钮上悬浮3s显示一个悬浮窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!