QT 事件过滤器实现鼠标悬浮时两个按钮背景互换

简介: QT 事件过滤器实现鼠标悬浮时两个按钮背景互换

假设我们在一个 Dialog 中放置了两个 PushButton ,分别叫 pushButton 和 pushButton_2。


要实现功能:


当鼠标悬浮到其中一个pushButton上时,两个pushbutton的QSS样式互换

newdialog.h
class newDialog : public QDialog
{
  ...
  代码省略
  ...
public:
  //自定义函数,用来注册需要管理的对象
  void toInstallEventFilter(); 
  //用来处理需要管理的对象的事件
  bool eventFilter(QObject *target, QEvent *event);
  ...
  代码省略
  ...
};


newdialog.cpp


//构造函数
newDialog::newDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::newDialog)
{
    ui->setupUi(this);
  //在构造函数中调用自定义函数 toInstallEventFilter()
    toInstallEventFilter();
}
//自定义函数
void newDialog::toInstallEventFilter()
{
    ui->pushButton->installEventFilter(this);
    ui->pushButton_2->installEventFilter(this);
}
//事件过滤器函数
bool newDialog::eventFilter(QObject *target, QEvent *event)
{
    if(target == ui->pushButton)
    {
        if(event->type() == QEvent::Enter)
        {
            ui->pushButton->setStyleSheet("QPushButton#pushButton{background-color: rgb(46, 52, 54);}");
            ui->pushButton_2->setStyleSheet("QPushButton#pushButton_2{background-color: rgb(238, 238, 236);}");
        }
        ui->pushButton->show();
        ui->pushButton_2->show();
    }
    if(target == ui->pushButton_2)
    {
        if(event->type() == QEvent::Enter)
        {
            ui->pushButton_2->setStyleSheet("QPushButton#pushButton_2{background-color: rgb(46, 52, 54);}");
            ui->pushButton->setStyleSheet("QPushButton#pushButton{background-color: rgb(238, 238, 236);}");
        }
        ui->pushButton->show();
        ui->pushButton_2->show();
    }
    return QDialog::eventFilter(target, event);
}


示例(截图中没有鼠标指针标志,实际上是有的):

当鼠标悬浮在左pushButton时:


0a2653c851af460fa595bd959398a8f1.png


当鼠标悬浮在右pushButton时:


2d65d23f6d4748949b924e4057485923.png

相关文章
|
1月前
【Qt 学习笔记】按钮实现helloworld | 信号与槽概述
【Qt 学习笔记】按钮实现helloworld | 信号与槽概述
25 0
|
2月前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
49 2
|
2月前
|
XML JSON 算法
C++视角下的Qt按钮:从基础应用到高级定制(一)
C++视角下的Qt按钮:从基础应用到高级定制
99 2
|
2月前
|
存储 机器学习/深度学习 人工智能
Qt魔法书:打造自定义鼠标键盘脚本(二)
Qt魔法书:打造自定义鼠标键盘脚本
39 0
|
2月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
281 0
|
3月前
|
API
QT基础入门——Qt事件(五)
QT基础入门——Qt事件(五)
56 0
QT基础入门——Qt事件(五)
|
1月前
|
C++
qt事件过滤器的使用(可以用于控制屏幕背光等)
qt事件过滤器的使用(可以用于控制屏幕背光等)
10 0
|
2月前
|
开发框架 UED 开发者
QML(Qt Quick) 按钮设计指南
QML(Qt Quick) 按钮设计指南
86 0
|
2月前
|
设计模式 安全 API
C++视角下的Qt按钮:从基础应用到高级定制(三)
C++视角下的Qt按钮:从基础应用到高级定制
58 0
|
2月前
|
开发框架 Linux API
Qt魔法书:打造自定义鼠标键盘脚本(一)
Qt魔法书:打造自定义鼠标键盘脚本
25 0

推荐镜像

更多