你还在用QPushButton吗?

转自:http://blog.csdn.net/yiyaaixuexi/article/details/6343337

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

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

 

 

 

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

2

  点击按钮效果

 

      实现代码:

     

  1. Button::Button(QWidget *parent) : QPushButton(parent)  
  2. {  
  3.     //保存图片成员初始化  
  4.     buttonPicture = new QPixmap();  
  5.     pressPicture = new QPixmap();  
  6.     releasePicture = new QPixmap();  
  7.   
  8.     //关闭按钮的默认显示  
  9.     this -> setFlat(true);  
  10. }  
  11.   
  12. void Button::setButtonPicture(QPixmap pic)  
  13. {  
  14.     *buttonPicture = pic;  
  15.       
  16.     this -> setIcon(QIcon(*buttonPicture));  
  17. }  
  18.   
  19. void Button::setPressPicture(QPixmap pic)  
  20. {  
  21.     *pressPicture = pic;  
  22. }  
  23.   
  24. void Button::setReleasePicture(QPixmap pic)  
  25. {  
  26.     *releasePicture = pic;  
  27. }  
  28.   
  29. void Button::set_X_Y_width_height(int x, int y, int width, int height)  
  30. {  
  31.     this -> setIconSize(QSize(width, height));  
  32.     this -> setGeometry(x, y, width, height);  
  33. }  
  34.   
  35. void Button::mouseDoubleClickEvent(QMouseEvent *event)  
  36. {  
  37.     //null  
  38. }  
  39.   
  40. void Button::mousePressEvent (QMouseEvent *event)  
  41. {  
  42.     this -> setIcon (QIcon(*pressPicture));  
  43. }  
  44.   
  45. void Button::mouseMoveEvent(QMouseEvent *event)  
  46. {  
  47.     //null  
  48. }  
  49.   
  50.   
  51. void Button::mouseReleaseEvent (QMouseEvent *event)  
  52. {  
  53.     this -> setIcon(QIcon(*releasePicture));  
  54.     emit clicked();  
  55. }  

 

 

    这下明白喽?我们只是需要在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、付费专栏及课程。

余额充值