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

摘要:
众所周知,QT设计器直接拖动的按钮是一个圆角矩形。如何设置自定义按钮?要设计按钮,我们必须知道按钮具有什么属性。首先,按钮必须有位置。其次,按钮必须有名称。当我们点击按钮时,他会做出什么反应。

大家都知道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); //用画刷来画自己喜欢的颜色

qt 5 小练习 纯代码制作自定义按钮第1张qt 5 小练习 纯代码制作自定义按钮第2张

else

p.setBrush(Qt::darkGreen);

}

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

作者 : Ten10

免责声明:文章转载自《qt 5 小练习 纯代码制作自定义按钮》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Android 应用开发】 ActionBar 基础MYSQL 数据库导入导出命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

drawRoundRect方法:绘制圆角矩形

【功能说明】该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现。该方法是绘制圆角矩形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆角矩形。 【基本语法】public void drawRoundRect (RectF rect, float rx, float ry, Paint paint) 参数说明 rect:Rect...

Button按钮响应鼠标按下与弹起消息

对话框上的按钮本身只能添加单击双击时间,不能响应鼠标按下与弹起消息,可以通过两种方法实现: 1.重载CButton类,将该类子类化 在工程中添加一个新类CMyButton,基类为CButton。 在对话框MyDlg中为IDC_BUTTON添加变量,在变量类型里选择CMyButton,变量名自定义,如m_myButton。添加函数OnDown与OnUp函数响...

SVG研究之路(一)

https://css-tricks.com/mega-list-svg-information/ rect 矩形 <svg height='200'> <g transform="translate(10 50) rotate(-30)"> <!-- 移动 (10,50) 旋转 -30 -->...

转载 Android之网络与通信

2.三种网络接口简述2.1标准Java接口java.net.*提供与联网有关的类,包括流和数据包套接字、Internet协议、常见HTTP处理。使用java.net.*包连接网络代码:Java代码 收藏代码try{ //定义地址 URL url=newURL("http://www.google.com"); //打开连接 HttpURLConn...

iOS UI-文本视图(UITextView)

1 #import "ViewController.h" 2 3 @interface ViewController ()<UITextViewDelegate> 4 5 @property (strong, nonatomic) UITextView *textView; 6 7 @end 8 9 @implement...

《QT Creator快速入门》第十章:2D绘制(3)

1、绘制文字 使用QPainter::drawText()来绘制文字: void Widget::paintEvent(QPaintEvent *event) { QPainter painter(this); QRectF rect(10.0, 10.0, 580.0, 280.0); painter.setPen(Qt::r...