qt 5 小练习 纯代码制作自定义按钮
大家都知道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 小练习 纯代码制作自定义按钮的更多相关文章
- Expression Blend制作自定义按钮(转)
来源:http://www.cnblogs.com/iChina/archive/2011/11/25/2262854.html Expression Blend制作自定义按钮 1.从Blend工具箱 ...
- iOS开发小技巧--纯代码自定义cell
纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方 ...
- 心跳(纯代码制作心形,animation动画)
思路:利用两个长方形(比例是2:3 | 3:2)可以合成心形,然后利用动画,缩放大小实现心跳(纯代码),效果如下: <body> <div></div> </ ...
- WPF学习笔记-用Expression Blend制作自定义按钮
1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点击此按钮,选择Edit control parts(template)>Edit a cop ...
- iOS纯代码制作欢迎界面——UIScrollView, UIPageControl, UIImageView,UIButton, NSTimer
欢迎界面,还是比较简单的,一个UIScrollView控件,一个UIPageControl,几个UIImageView即可摆平.在这里光玩这些,就显得诚意不足了.特意拓展一下,再加几个UIButton ...
- 微信小程序纯css制作圆形进度条所遇到的问题
wrapBox:最外层盒子,背景色为进度条的颜色 leftBox/rightBox:半宽等长 左/右浮动的盒子,背景色为灰色 roundMask:居中的盒子 用来遮盖leftBox和rightBox ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 纯代码实现信号槽
失败,系统找不着槽 #include<QtGui> int main(int argc, char * argv[]) { QApplication app(argc, argv); QT ...
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...
- Dynamics CRM使用JS隐藏自定义按钮
在我们平时客制化开发的时候会经常遇到要制作自定义按钮的情况,而这个自定义按钮的功能又经常会有一些隐藏逻辑需要实现,所以每次通过获取控件查找这个按钮再隐藏比较麻烦,而且偶尔会出现代码没起作用的效果.下面 ...
随机推荐
- XStream将xml文件拼成字符串
1.引入的包 <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId&g ...
- Java设计模式08:框架基础知识
1. 框架是什么 ? 框架是能完成一定功能的半成品软件.(不能直接使用,还需要再加工,所以叫半成品.比如:方便面) 2. 框架能干什么 ? (1)能完成一定的功能,加快程序开发进度. (2)给我们一个 ...
- iOS之设置状态栏颜色
状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一.在info.plist中,将View contro ...
- Adroid_Spinner_ArrayAdapter
XML布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...
- PHP中foreach循环详解
首先要说的是,其实我对foreach循环的用法并不是很精通,说详解,其实也只是我自己的理解,希望对你能有点帮助 . 先来看一下foreach的语法: foreach ($array as $key=& ...
- ajax_jsonp —— 跨域
JSONP:原理是script标签 一.抓包 二.不用每次都连接 localhost 的方法 三.抓包后所需的参数 su?:后面跟的是传递过去的参数. cb:是 callback 后面跟的是对返回 ...
- php入门实现留言板
首先由一个文本文档read.txt liulan.html <!doctype html> <html lang="en"> <head> &l ...
- C# 3.0 基本框架
使用TimeZoneInfo: static void Main() { TimeZoneInfo wa = TimeZoneInfo.FindSystemTimeZoneById ("W. ...
- HW-文件恢复-测试300
//package t0817; import java.util.*; public class FileRelive {//类名换成Main public static void main(Str ...
- 从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI -- 结构规划
环境说明 注,本套环境所用机器全部是64位的. 管理服务器载体:安装win7操作系统,通过VMware Workstation安装4台虚拟机,用作vCenter,Connection Server,D ...