Qt實現鼠標進入顯示按鈕離開隱藏按鈕


自己開發了一個股票智能分析軟件,功能很強大,需要的點擊下面的鏈接獲取:

https://www.cnblogs.com/bclshuai/p/11380657.html

掃碼關注公眾號

目錄

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);");

}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM