這篇文章主要介紹Qt模仿IOS滑動按鈕效果,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)是專業(yè)的銅川網(wǎng)站建設(shè)公司,銅川接單;提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行銅川網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!中我將介紹如何用Qt實(shí)現(xiàn)IOS形式的滑動按鈕。其實(shí)在Android中實(shí)現(xiàn)這個(gè)和在Qt中實(shí)現(xiàn)是一樣的道理的,只是使用的工具有所不同罷了。在Qt里面我們使用的是C++,而Android中則是Java。語言并不是決定的因素,而實(shí)現(xiàn)的思路才是最終決定勝負(fù)的利器。
1)、在Android中的繪制主要是在OnDraw這個(gè)函數(shù)里面進(jìn)行的,且可以在OnDraw外部寫函數(shù)進(jìn)行繪制,只需把Cavas傳入即可。而在Qt里面的繪制主要是在painEvent里面進(jìn)行的,且不能再外部寫函數(shù)實(shí)現(xiàn)它的繪制。
2)、在Android中承擔(dān)繪制的主要是Canvas這個(gè)對象,Painter主要是來進(jìn)行畫筆的定義和修改。而在Qt里面主要承擔(dān)繪制任務(wù)的是Painter對象,它既要充當(dāng)畫筆的角色,還要做為畫板來存在。
3)、在Android里面我們可以使用ValueAnimation來實(shí)現(xiàn)動畫刷新,而在Qt里面并沒用提供這樣的一個(gè)函數(shù),所以我們只能通過QTimer來主動刷新,具體代碼在下方。
4)、在兩份代碼里面懂提供了外部接口來訪問和讀寫它的狀態(tài)。
代碼如下
1、switchButton的頭文件
#ifndef SWITCHBUTTON_H #define SWITCHBUTTON_H #include#include class switchButton : public QWidget { Q_OBJECT public: explicit switchButton(QWidget *parent = 0); void writeSwitchButtonState(bool ison); bool readSwitchButtonState(); private: bool ison=false; float currentValue; float widthSize,heightSize; QTimer *timer; void paintEvent(QPaintEvent *event);//繪制事件 void mousePressEvent(QMouseEvent *event);//點(diǎn)擊事件 signals: public slots: private slots: void begainAnimation(); }; #endif // SWITCHBUTTON_H