当前位置:   article > 正文

C++Qt做一个鼠标在按钮上悬浮3s显示一个悬浮窗口_qt悬停显示窗口

qt悬停显示窗口

当你想要在 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;
};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

在这个示例中,我们创建了一个名为 HoverButton 的自定义按钮类,继承自 QPushButton。在这个自定义按钮类中,我们重写了 enterEvent 和 leaveEvent 事件处理函数,以便在鼠标悬浮和离开按钮时启动和停止定时器。当定时器超时时,会显示悬浮窗口。

请替换示例中的 “path_to_image.jpg” 为你实际的图片路径,并根据你的实际需求修改代码。


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/962519
推荐阅读
相关标签
  

闽ICP备14008679号