Qt实现苹果状态切换按钮

本文实例为大家分享了Qt实现苹果状态切换按钮的具体代码,供大家参考,具体内容如下

代码如下

#include "button.h"
#include <QDebug>

Button::Button(QWidget *parent) :
 QPushButton(parent)
{
 status = 0;
 span_length = 0;
 rl_flag = false;
 release_flag =true;
 timeline = new QTimeLine;
 connect(timeline,SIGNAL(frameChanged(int)),this,SLOT(timeOut(int)));
}

void Button::paintEvent(QPaintEvent *e)
{
 QPainter painter(this);
 painter.setRenderHint(QPainter::Antialiasing, true);
 QPen pen;
 pen.setWidth(2);
 pen.setColor(QColor(219,219,219));
 painter.setPen(pen);
 painter.setBrush(Qt::green);
 painter.drawRoundedRect(1,1,this->width()-2,this->height()-2,30,30);

 painter.setBrush(Qt::white);
 painter.setPen(pen);

 if(!rl_flag){
  switch(status)
  {
  case 0:painter.drawEllipse(1,1,this->height()-3,this->height()-3);break;
  case 1:painter.drawRoundedRect(1,1,span_length,this->height()-2,30,30);break;
  case 2:painter.drawEllipse(this->width()+3-this->height(),1,this->height()-3,this->height()-3);rl_flag=true;status=0;break;
  }
 }else{
  switch(status)
  {
  case 0:painter.drawEllipse(this->width()+3-this->height(),1,this->height()-3,this->height()-3);break;
  case 1:painter.drawRoundedRect(this->width()-1-span_length,1,span_length,this->height()-2,30,30);break;
  case 2:painter.drawEllipse(1,1,this->height()-3,this->height()-3);rl_flag=false;status=0;break;
  }
 }
}

void Button::drawSpan(QPainter painter,int s)
{

}

void Button::mousePressEvent(QMouseEvent *e)
{
 timeline->setDuration(400);
 span_length = 0;
 status=1;
 if(!rl_flag){
  int r1 = this->height()-3;
  int r2 = (this->width()/4*3)>r1?(this->width()/4*3):r1;
  timeline->setFrameRange(r1,r2);
 }else{
  int r1 = this->height()-3;
  int r2 = (this->width()/4*3)>r1?(this->width()/4*3):r1;//(this->width()/4*1)>r1?(this->width()/4*1):r1;
  timeline->setFrameRange(r1,r2);
 }
 timeline->start();
}

void Button::mouseMoveEvent(QMouseEvent *e)
{
}

void Button::mouseReleaseEvent(QMouseEvent *e)
{
 timeline->stop();
 status = 2;
 update();
}

void Button::timeOut(int x)
{
 status = 1;
 span_length = x;
 update();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Qt模仿IOS滑动按钮效果

    在上一篇文章里我介绍了在Android中如何实现IOS形式的滑动按钮,在这篇文章中我将介绍如何用Qt实现IOS形式的滑动按钮.其实在Android中实现这个和在Qt中实现是一样的道理的,只是使用的工具有所不同罢了.在Qt里面我们使用的是C++,而Android中则是Java.语言并不是决定的因素,而实现的思路才是最终决定胜负的利器. 1).在Android中的绘制主要是在OnDraw这个函数里面进行的,且可以在OnDraw外部写函数进行绘制,只需把Cavas传入即可.而在Qt里面的绘制主要是在p

  • Qt实现苹果状态切换按钮

    本文实例为大家分享了Qt实现苹果状态切换按钮的具体代码,供大家参考,具体内容如下 代码如下 #include "button.h" #include <QDebug> Button::Button(QWidget *parent) : QPushButton(parent) { status = 0; span_length = 0; rl_flag = false; release_flag =true; timeline = new QTimeLine; connect

  • PyQt5每天必学之切换按钮

    切换按钮是QPushButton的特殊模式.它是一个具有两种状态的按钮:按压和未按压.我们通过这两种状态之间的切换来修改其它内容. #!/usr/bin/python3 # -*- coding: utf-8 -*- """ PyQt5 教程 在这个例子中,我们创建三个切换按钮. 他们将控制一个QFrame的背景颜色. 作者:我的世界你曾经来过 博客:http://blog.csdn.net/weiaitaowang 最后编辑:2016年8月3日 ""&q

  • Qt实现界面滑动切换效果的思路详解

    目录 一.Qt实现界面滑动切换效果 二. 设计思路 三.主要函数讲解 四.源代码解析 4.1 初始化界面 4.2 上一页滑动效果 4.3  下一页滑动效果 4.4 动画结束处理 五.源码地址 一.Qt实现界面滑动切换效果 效果如下图,滑动效果移动上下屏幕. 二. 设计思路 利用QStackWidget将页面存储起来,因为页面比较少,因此我直接将所有的页面存储在QStachWidget中,如果页面相对较多,可以使用使用使渲染的方式. 然后使用show函数同时展示两个页面的内容,这个很重要,如果使用

  • python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例

    PyQt5切换按钮控件QPushButton简介 QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox这些按钮均继承自QAbstractButton类,根据各自的使用场景通过图形显示出来 QAbstractButton提供的状态如下表 状态 含义 isDown() 提示按钮是否已按下 isChecked() 提

  • vue中点击切换按钮功能之点启用后按钮变为禁用

    实现方法分位三步: 在template中设置2个按钮,通过v-if ,v-show来控制: data中设置按钮的默认值: methods中控制点击按钮切换效果. <template> <el-table :data="tableData" border style="width: 100%"> <el-table-column fixed prop="date" label="日期" width=

  • Extjs grid添加一个图片状态或者按钮的方法

    extjs的grid中我们经常需要添加一个图片状态或者按钮,总结一下自己用过的方法: 一.状态表示: 复制代码 代码如下: renderer:function(value){ if(value==0){ return "<img src='images/icons/cancel.png'>"; }else if(value==1){ return "<img src='images/icons/accept.png'>"; } return

  • Swift开发之UITableView状态切换效果

    效果 源码 https://github.com/YouXianMing/Swift-Animations // // TableViewTapAnimationController.swift // Swift-Animations // // Created by YouXianMing on 16/8/7. // Copyright © 2016年 YouXianMing. All rights reserved. // import UIKit class TableViewTapAni

  • Javascript实现苹果悬浮虚拟按钮

    Javascript实现苹果悬浮虚拟按钮 直接引入代码到页面即可 代码有部分冗余的地方,有兴趣的小伙伴可也自己修改 如果有什么BUG 记得评论 告诉我哦 web-touch.js var new_element_N=document.createElement("style"); new_element_N.innerHTML = '#drager {' + ' position: fixed;' + ' width: 35px;' + ' height: 35px;' + ' bac

  • C# PDF Page操作设置页面切换按钮的方法

    概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者最后一页,另一种是设置按钮跳转到指定页面.两种方法适应不同的程序设计需要,可自行选择合适的添加方法. 说明 这里的代码示例需要使用类库Spire.PDF for .NET,版本4.0 .在使用该类库时,在项目程序中引用Spire.Pdf.dll即可(dll文件在安装路径下的Bin文件中获取). 如: 代码操作示例(供参考) 1.跳转至特定页(首页.下

  • Vue.js点击切换按钮改变内容的实例讲解

    代码实例: 代码描述:点击切换按钮,来改变显示的内容,切换不同的单位.flag相当于一个开关,控制开关的改变,来切换不同的单位.同样适用于其他的切换内容实例,也可设置按钮点击显示隐藏等. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>vue点击切换改变内容</title> <script src="https://cdn.bo

随机推荐