你还在用QPushButton吗?

本文介绍如何使用Qt自定义美观的按钮,通过设置不同状态下的图标实现按钮的动态效果,并提供了一个简单的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有很多朋友都抱怨,为什么自己使Qt做的小项目,UI那么土那么俗,方方框框,基本控件很丑,要不是Qt的跨平台,才不去学习它。呵呵,其实我想说,嵌入式系统中的图形界面,通通交给QT,绝对没问题!

简单说说自定义Button,QPushButton是常用组件之一,先看下效果。

当单击按钮后,效果如图:

2

点击按钮效果

实现代码:

Button::Button(QWidget *parent) : QPushButton(parent) { //保存图片成员初始化 buttonPicture = new QPixmap(); pressPicture = new QPixmap(); releasePicture = new QPixmap(); //关闭按钮的默认显示 this -> setFlat(true); } void Button::setButtonPicture(QPixmap pic) { *buttonPicture = pic; this -> setIcon(QIcon(*buttonPicture)); } void Button::setPressPicture(QPixmap pic) { *pressPicture = pic; } void Button::setReleasePicture(QPixmap pic) { *releasePicture = pic; } void Button::set_X_Y_width_height(int x, int y, int width, int height) { this -> setIconSize(QSize(width, height)); this -> setGeometry(x, y, width, height); } void Button::mouseDoubleClickEvent(QMouseEvent *event) { //null } void Button::mousePressEvent (QMouseEvent *event) { this -> setIcon (QIcon(*pressPicture)); } void Button::mouseMoveEvent(QMouseEvent *event) { //null } void Button::mouseReleaseEvent (QMouseEvent *event) { this -> setIcon(QIcon(*releasePicture)); emit clicked(); }

这下明白喽?我们只是需要在mousePressEvent和mouseReleaseEvent中,添加setIcon(QIcon(*buttonPicture))的处理,就让Button动起来了o(∩_∩)o ...

顺便说下icon的资源处理,你不要告诉我你不会PS哦,即使不会,咱可是可以写PS的无所不能的程序员,学一下怎么使用应该不难吧?
将图片抠出所选区域,设置为透明png格式,这样不会覆盖背景。建议大家把文字也做进图片里,而不是在QT里文本,因为不同分辨率不同大小的嵌入式设备屏幕,显示效果不好控制。 制作静态(同释放后)与点击状态两种按钮图标。
好人
就是这样!简单吧?
这里预留了mouseDoubleClickEvent(QMouseEvent *event),mouseMoveEvent(QMouseEvent *event)的响应,热爱Qt的朋友不如自己动动手,美化自己的button~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值