码迷,mamicode.com
首页 > 其他好文 > 详细

qt 5 小练习 纯代码制作自定义按钮

时间:2015-10-14 23:14:37      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:

大家都知道QT设计师中直接拖动的按钮是长方形带有圆角的图案,那我们如何来设置自定义按钮呢

 

 要设计一个按钮,我们必须要知道按钮有什么属性,首先,按钮必须有一个位置

 第二,按钮必须有一个名称。还有当我们点击按钮时他会做出什么样的反应。所以我们定义两个类,

 

 

 一个QRect _rect; (或者QPoint 更为贴切吧)

 第二个是 QString _text;

 既然有反应,那我们第一想到的就是鼠标事件,添加一个bool _press;

 以及 void mousePressEvent(QMouseEvent *); 和 mouseReleaseEvent(QMouseEvent *);

 

 首先我们需要在构造函数里面初始化位置

 mybutton::mybutton(const QString text,QWidget *parent)      

                                  //构造函数,父类为Widget

 QRect(0,0,90,25);    //  位置为0,0 长度为90,宽度为25

 _text(text);             //   或者 _text = text;                                                       

 

一般情况下我们都在painEvent里面化东西,画按钮也是如此,根据你喜欢的样式而话,例如博主喜欢椭圆。

 void mybutton::painEvent(QPainEvent *)

 {

          QPainter p(this);

          p.drawEllipse(_rect);                    //  有4个参数,分别是位置和长宽,如果长和宽相等就是一个标准的圆了

          p.drawText(_rect,_text,QTextOption(Qt::AlignCenter);

          //设置文本有三个参数,分别是 对象,文本,文本位置

 }

 

如果我们需要鼠标左键单击一下按钮就变色的话,我们可以通过ture or false来处理

void mybutton::mousePressEvent(QMouseEvent *)

{

     _press = true;

     this->update();             //点击一下更新一下,调用painEvent

}

void mybutton::mouseReleaseEvent(QMouseEvent *)

{

     _press = false;

     this->update();             //点击一下更新一下,调用painEvent

}

void mybutton::painEvent(QPainEvent *)

{   

     if(_press ==false)                                                                   

     p.setBrush(Qt::darkYello);        //用画刷来画自己喜欢的颜色

  技术分享技术分享

     else                                                                                               

     p.setBrush(Qt::darkGreen);

}

 

                     

 

qt 5 小练习 纯代码制作自定义按钮

标签:

原文地址:http://www.cnblogs.com/Ten10/p/Ten15.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!