Qt5实现鼠标进入显示按钮离开隐藏按钮

0 526
索鸟 2021-03-10
需要:0索币

目录

1      实现目标

2      实现思路

 

1       实现目标

项目中需要实现鼠标进入Widget界面,显示按钮或图标,鼠标离开的时候,隐藏按钮或图标。或者实现鼠标进入离开时背景色发生变化。

 

 

 

2       实现思路

自定义一个类继承QWidget类,重写鼠标进入和离开函数。在widget上添加按钮。鼠标进入时,显示按钮,鼠标离开时隐藏按钮。

(1)定义一个界面

 

 

 

(2)自定义一个类重写鼠标进入离开函数

头文件

#ifndef COMPAREVIEW_H

#define COMPAREVIEW_H

#include <QWidget>

#include "ui_CompareView.h"

#include <QImage>

#include"FaceDefine.h"

class CompareView : public QWidget

{

    Q_OBJECT

 

public:

    CompareView(MatchData matchData);

    ~CompareView();

    MatchData GetMatchData() { return m_matchData; };

    Ui::MatchWidget ui;

protected:

    void enterEvent(QEvent *e);                      //进入QWidget瞬间事件

    void leaveEvent(QEvent *e);                      //离开QWidget瞬间事件

 

private:

   

    MatchData m_matchData;

    //QImage* m_imgTarget = NULL; //

    //QImage* m_imgSource = NULL; //

};

 

#endif // COMPAREVIEW_H

 

源文件

#include "CompareView.h"

CompareView::CompareView(MatchData matchData)

{

    ui.setupUi(this);

    setWindowModality(Qt::NonModal);

    setWindowFlags(Qt::FramelessWindowHint);

    this->resize(114, 114);

    m_matchData = matchData;

ui.MatchPercent->setText(QString::number(m_matchData.matchPercent*100).left(2) +"%");

   

    QPixmap pix(matchData.strTargetPath);

    pix = pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);

    ui.PicTarget->setPixmap(pix);

 

    ui.pushButtonPlay->hide();

    ui.pushButtonMax->hide();

    ui.labelTime->hide();

}

 

CompareView::~CompareView()

{

   

}

void CompareView::enterEvent(QEvent *e)

{

    ui.PicTarget->setStyleSheet("background: rgba(0,0,0,0.60);");

    ui.pushButtonPlay->show();

    ui.pushButtonMax->show();

    ui.labelTime->show();

}

 

void CompareView::leaveEvent(QEvent *e)//离开隐藏closebutton

{

    ui.pushButtonPlay->hide();

    ui.pushButtonMax->hide();

    ui.labelTime->hide();

    ui.PicTarget->setStyleSheet("background:rgba(56, 156, 255,0.08);");

}

原文地址:https://www.cnblogs.com/bclshuai/p/13704059.html

回帖
  • 消灭零回复
相关主题
2020年最新最新Kubernetes视频教程(K8s)教程 2
程序员转型之制作网课变现,月入过万告别996 1
索鸟快传2.0发布啦 1
两个不同网络的电脑怎么实现文件的互相访问呢? 1
网盘多账号登录软件 1
Java实战闲云旅游项目基于vue+element-ui 1
单点登录技术解决方案基于OAuth2.0的网关鉴权RSA算法生成令牌 1
QT5获取剪贴板上文本信息QT设置剪贴板内容 1
springboot2实战在线购物系统电商系统 1
python web实战之爱家租房项目 1
windows COM实用入门教程 1
C++游戏开发之C++实现的水果忍者游戏 1
计算机视觉库opencv教程 1
node.js实战图书管理系统express框架实现 1
C++实战教程之远程桌面远程控制实战 1
相关主题
PHP7报A non well formed numeric value encountered 0
Linux系统下关闭mongodb的几种命令分享 0
mongodb删除数据、删除集合、删除数据库的命令 0
Git&Github极速入门与攻坚实战课程 0
python爬虫教程使用Django和scrapy实现 0
libnetsnmpmibs.so.31: cannot open shared object file 0
数据结构和算法视频教程 0
redis的hash结构怎么删除数据呢? 0
C++和LUA解析器的数据交互实战视频 0
mongodb errmsg" : "too many users are authenticated 0
C++基础入门视频教程 0
用30个小时精通C++视频教程可能吗? 0
C++分布式多线程游戏服务器开发视频教程socket tcp boost库 0
C++培训教程就业班教程 0
layui的util工具格式时间戳为字符串 0
C++实战教程之远程桌面远程控制实战 1
网络安全培训视频教程 0
LINUX_C++软件工程师视频教程高级项目实战 0
C++高级数据结构与算法视频教程 0
跨域问题很头疼?通过配置nginx轻松解决ajax跨域问题 0