【Qt应用】Qt部件icon图标:悬停放大,离开复原

目录

前言

1.部件插入icon图标

1.1  使用资源文件(推荐方式)

①代码设置

②通过界面文件(ui文件)的属性编辑器设置

1.2 通过外部文件设置

2. 部件安装事件过滤器

2.1 安装事件过滤器

2.2 事件过滤器的代码实现

3.实现效果 

优化

附:添加资源文件的方法

①鼠标右键项目选中添加新文件

②左边文件和类的框中选择Qt,中间框中选择Qt Resource File,之后再点击右下角选择即可

③文件名随意,输入完成之后点击下一步即可

④这里不用改,点击完成就创建成功了

⑤刚开始添加文件是暗的,点击不了,只需要点击添加前缀即可添加文件了


前言

Qt默认的鼠标悬停效果比较简单且不易看出,本文通过事件过滤器对鼠标悬停与离开的效果进行了重写。

1.部件插入icon图标

下面都以Push Button为例:

1.1  使用资源文件(推荐方式)

Qt的资源系统允许开发者将图标、图片等资源文件编译到应用程序的可执行文件中,从而避免了在运行时依赖外部文件的问题。

①代码设置
QPushButton *button = new QPushButton(this);//初始化一个按钮
button->setText("");//将按钮的文本清空
button->setIcon(QIcon(":path/to/your/icon.png"));//设置按钮的icon图标,更改为自己的图标路径
②通过界面文件(ui文件)的属性编辑器设置

注:这里的button不能通过代码生成,需要在控件盒子中找到Push Button拖入ui文件中

找到属性编辑器中的icon选项,再点击倒三角选取选择资源这一选项即可 

1.2 通过外部文件设置

QIcon icon("path/to/your/icon.png");  //更改为自己的图标路径
yourWidget->setIcon(icon);

2. 部件安装事件过滤器

2.1 安装事件过滤器

设置按钮的文本内容、图标以及大小。 

QPushButton *button = new QPushButton(this);//初始化一个按钮
button->setText("");//将按钮的文本清空
button->setIcon(QIcon(":path/to/your/icon.png"));//设置按钮的icon图标(更改为自己的图标路径)
button->resize(QSize(100, 100));//设置按钮的大小
button->setIconSize(QSize(50, 50));//设置按钮的icon图标的大小
button->installEventFilter(this);//安装事件过滤器

2.2 事件过滤器的代码实现

判断鼠标进入按钮与离开按钮的信号,进入按钮则将按钮图标变大实现悬停放大的效果,离开按钮则将图标恢复原样实现离开复原的效果 

bool YouClass::eventFilter(QObject *obj, QEvent *event) {
    QPushButton *button = static_cast<QPushButton*>(obj);
    if (event->type() == QEvent::Enter) {
        // 鼠标进入按钮时,改变按钮的图标大小(这里以具体的数值为例)
        button->setIconSize(QSize(100, 100));

        return true; // 表示事件已被处理
    } else if (event->type() == QEvent::Leave) {
        // 鼠标离开内部按钮时,恢复外部按钮的默认样式(这里以具体的数值为例)
        button->setIconSize(QSize(50, 50));

        return true; // 表示事件已被处理
    }
    return YouClassBaseClass::eventFilter(obj, event);
}

3.实现效果 

优化

将按钮背景设置成透明:

button->setStyleSheet("QPushButton {background-color:transparent;}");

 

附:添加资源文件的方法

①鼠标右键项目选中添加新文件

②左边文件和类的框中选择Qt,中间框中选择Qt Resource File,之后再点击右下角选择即可

③文件名随意,输入完成之后点击下一步即可

④这里不用改,点击完成就创建成功了

⑤刚开始添加文件是暗的,点击不了,只需要点击添加前缀即可添加文件了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值