大家都知道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);

}

此文章属于博主原创,如需转载,请注明出处

作者 : Ten10

qt 5 小练习 纯代码制作自定义按钮的更多相关文章

  1. Expression Blend制作自定义按钮(转)

    来源:http://www.cnblogs.com/iChina/archive/2011/11/25/2262854.html Expression Blend制作自定义按钮 1.从Blend工具箱 ...

  2. iOS开发小技巧--纯代码自定义cell

    纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方 ...

  3. 心跳(纯代码制作心形,animation动画)

    思路:利用两个长方形(比例是2:3 | 3:2)可以合成心形,然后利用动画,缩放大小实现心跳(纯代码),效果如下: <body> <div></div> </ ...

  4. WPF学习笔记-用Expression Blend制作自定义按钮

    1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点击此按钮,选择Edit control parts(template)>Edit a cop ...

  5. iOS纯代码制作欢迎界面——UIScrollView, UIPageControl, UIImageView,UIButton, NSTimer

    欢迎界面,还是比较简单的,一个UIScrollView控件,一个UIPageControl,几个UIImageView即可摆平.在这里光玩这些,就显得诚意不足了.特意拓展一下,再加几个UIButton ...

  6. 微信小程序纯css制作圆形进度条所遇到的问题

    wrapBox:最外层盒子,背景色为进度条的颜色 leftBox/rightBox:半宽等长 左/右浮动的盒子,背景色为灰色 roundMask:居中的盒子 用来遮盖leftBox和rightBox ...

  7. C/C++ -- Gui编程 -- Qt库的使用 -- 纯代码实现信号槽

    失败,系统找不着槽 #include<QtGui> int main(int argc, char * argv[]) { QApplication app(argc, argv); QT ...

  8. ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

    本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...

  9. Dynamics CRM使用JS隐藏自定义按钮

    在我们平时客制化开发的时候会经常遇到要制作自定义按钮的情况,而这个自定义按钮的功能又经常会有一些隐藏逻辑需要实现,所以每次通过获取控件查找这个按钮再隐藏比较麻烦,而且偶尔会出现代码没起作用的效果.下面 ...

随机推荐

  1. linux vi 撤销重做于前进后退--转

    在vi中按u可以撤销一次操作 u   撤销上一步的操作Ctrl+r 恢复上一步被撤销的操作 注意:如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了.重做如果你撤销得太多 ...

  2. Debug 之 VS2010网站生成成功,但是发布失败

    用vs做好了网站.清理解决方案和重新生成解决方案都可以.但是发布不能成功.发布不能成功,有错误还好,郁闷的是竟然没有错误提示. 解决方法: 1.发布文件夹权限问题.重新找个地方建立一个发布文件夹即可. ...

  3. Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

    1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文 ...

  4. Android(java)学习笔记86:案例短信发送器

    1.一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯: <?xml version="1.0" encoding="utf-8"?&g ...

  5. 使用ueditor时候修改图片路径及其相关信息

    ueditor功能比较强大  使用也比较方便 但是有一些东西是需要我们自己根据实际情况去设置的 以下是关于图片/涂鸦/视频等上传信息的更改: 首先我们要找到配置文件config.json 注意不是co ...

  6. mongodb学习相关网址

    1.MongoDB官网 https://www.mongodb.org 2.MongoDB教程 http://www.yiibai.com/mongodb 3.MongoDB教程http://www. ...

  7. Android开发了解——ODEX

    ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个·dex文件单独存放,原APK中的classes.dex文件会保留.这 ...

  8. 解决闪光灯代码在Nexus5上面打不开的问题

    参考:http://blog.csdn.net/cy524563/article/details/41545387 关键在于: int textureId = 0;whyCamera.setPrevi ...

  9. js定时器window.setTimeout和setInterval

    window.setTimeout(function(){                            document.getElementById("editorindex&q ...

  10. oracle中decode()函数

    简单写写,后续继续补充