Qt實(shí)現(xiàn)蘋果狀態(tài)切換按鈕
更新時(shí)間:2020年08月20日 11:52:23 作者:qcgao
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)蘋果狀態(tài)切換按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Qt實(shí)現(xiàn)蘋果狀態(tài)切換按鈕的具體代碼,供大家參考,具體內(nèi)容如下
代碼如下
#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(); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算
這篇文章介紹了C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C++實(shí)現(xiàn)坦克大戰(zhàn)小游戲EGE圖形界面
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)坦克大戰(zhàn)小游戲EGE圖形界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03C++?RBTree紅黑樹的性質(zhì)與實(shí)現(xiàn)
紅黑樹是一種二叉搜索樹,但在每個(gè)結(jié)點(diǎn)上增加一個(gè)存儲位表示結(jié)點(diǎn)的顏色,可以是Red或Black;通過對任何一條從根到葉子的路徑上各個(gè)結(jié)點(diǎn)著色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出倆倍,因而是平衡的2023-03-03c++ 結(jié)構(gòu)體內(nèi)存對齊基本概念及示例
這篇文章主要介紹了c++ 結(jié)構(gòu)體內(nèi)存對齊基本概念及示例,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下2020-12-12C語言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解
這篇文章主要介紹了C語言實(shí)現(xiàn)字符串操作函數(shù)的實(shí)例的相關(guān)資料,開發(fā)程序的時(shí)候經(jīng)常使用到一些字符串函數(shù),例如求字符串長度,拷貝字符串……,需要的朋友可以參考下2021-09-09