最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt實現(xiàn)自定義驗證碼輸入框控件的方法

 更新時間:2022年04月01日 11:17:15   作者:黑兔子  
本文主要介紹了Qt實現(xiàn)自定義驗證碼輸入框控件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文實現(xiàn)了自定義的驗證碼輸入框控件??丶▓D標(biāo)、輸入框、獲取驗證碼按鈕、驗證碼獲取倒計時標(biāo)簽。支持鼠標(biāo)點擊獲取驗證碼按鈕后開始顯示倒計時功能,倒計時為0時,才可以在此點擊獲取驗證碼按鈕。效果如圖:

主要的編程思想還是實現(xiàn)自定義控件的封裝性和共用性。

UI布局:

  • 控件1:QWidget,實現(xiàn)整個控件的封裝,這個控件使用水平布局,實現(xiàn)控件的水平擺放,同時,當(dāng)其中一個控件隱藏時,位置會重新更新,實現(xiàn)在控件的后面只顯示獲取驗證碼和倒計時兩個控件中的一個。
  • 控件2:QLabel,實現(xiàn)展示盾牌圖標(biāo)。
  • 控件3:QLineEdit,實現(xiàn)驗證碼輸入功能。
  • 控件4:QPushButton,實現(xiàn)獲取驗證碼功能。
  • 控件5:QLabel,實現(xiàn)倒計時顯示。

頁面樣式初始化:

控件1:實現(xiàn)外邊框和背景: 邊框?qū)?像素,顏色#DBDBDB,背景顏色#FFFFFF。

setStyleSheet("QWidget#widget{border:1px solid #DBDBDB;background-color:#FFFFFF;}");

控件2:實現(xiàn)盾牌圖標(biāo)的展示: 圖片資源:image/vCode.png。

ui.lablevCode->setStyleSheet("border-image:url(image/vCode.png);");

控件3:實現(xiàn)驗證碼輸入功能: 無邊框,背景顏色#FFFFFF,字體顏色#333333。

ui.lineEdit->setStyleSheet("QLineEdit{border:0px;color:#333333;background:#FFFFFF;}");

控件4:實現(xiàn)獲取驗證碼按鈕: 無邊框,字體顏色#999999,鼠標(biāo)懸浮時字體顏色#3B85FF。

ui->pushButton->setStyleSheet("QPushButton{border:none;color:#999999;}"
                              "QPushButton:hover{border:none;color:#3B85FF;}");

控件5:初始化隱藏(在沒有點擊獲取驗證碼按鈕時為隱藏狀態(tài),點擊獲取驗證碼按鈕后,顯示倒計時,隱藏獲取驗證碼按鈕)。字體顏色#b7b7b7。

ui->label_time->setStyleSheet("QLabel{color:#b7b7b7;}");
ui->label_time->hide();

除了這些控件外,我們還需要創(chuàng)建一個定時器,用來實現(xiàn)倒計時的功能,定時器的溢出時間為1s,定時器的槽函數(shù)為slotVCodeTimeout()。

//創(chuàng)建成員變量
QTimer *m_timer;
//動態(tài)創(chuàng)建定時器,并指定定時器的溢出事件和槽函數(shù)
m_vCodeTimer = new QTimer(this);
connect(m_vCodeTimer, SIGNAL(timeout()), this, SLOT(slotVCodeTimeout()));
m_vCodeTimer->setInterval(1000);  // 1s

功能實現(xiàn):

1. 輸入限制:

不顯示上下文菜單,禁止輸入中文,默認(rèn)顯示“請輸入驗證碼”,手機(jī)號只能是11位0~9的數(shù)字。

ui.lineEdit->setContextMenuPolicy (Qt::NoContextMenu); // 不顯示上下文菜單
ui.lineEdit->setAttribute(Qt::WA_InputMethodEnabled, false);  // 設(shè)置禁止中文輸入
ui.lineEdit->setPlaceholderText(QString::fromLocal8Bit("請輸入驗證碼")); // 設(shè)置默認(rèn)顯示內(nèi)容
QRegExp rx("[0-9]{1,8}"); // 正則表達(dá)式:數(shù)字, 8位
QRegExpValidator *validator = new QRegExpValidator(rx, this);
ui.lineEdit->setValidator(validator);// 設(shè)置正則表達(dá)式

2.點擊獲取驗證碼按鈕,執(zhí)行獲取驗證碼操作:

在按鈕的點擊響應(yīng)函數(shù)中,調(diào)用獲取驗證碼的方法,通常是調(diào)用后臺接口,實現(xiàn)給指定手機(jī)號發(fā)送驗證碼的功能。這里可以發(fā)射一個信號,由控件外部響應(yīng)這個信號,再做相應(yīng)的操作,如判斷是否輸入手機(jī)號、手機(jī)號是否正確、調(diào)用后臺接口、判斷是否成功發(fā)送驗證碼等。

void VCodeLineEdit::on_pushButton_clicked()
{
    //調(diào)用獲取驗證碼方法
}

3.隱藏獲取驗證碼按鈕,顯示倒計時:

ui->pushButton->hide();//隱藏獲取驗證碼按鈕
ui->label_time->show();//顯示倒計時標(biāo)簽

if (m_vCodeTimer->isActive())如果定時器已經(jīng)啟動,先停止定時器,再重新打開定時器
{
    m_vCodeTimer->stop();
}
m_vCodeTimer->start();
//設(shè)置倒計時顯示的文本
ui->label_time->setText(QString::number(m_time) +QStringLiteral("s后重新發(fā)送"));

4.定時器響應(yīng)函數(shù):

這里定義了一個成員變量m_time,m_time的初始值設(shè)置為60(倒計時事件為60s)。每次定時器溢出,m_time的值減1,先判斷m_time是否已經(jīng)小于等于0。如果是,則表示倒計時結(jié)束,隱藏倒計時標(biāo)簽,重新顯示獲取驗證碼按鈕,并關(guān)閉定時器,重置m_time。如果沒有小于等于0,表示倒計時沒有結(jié)束,則更新倒計時顯示標(biāo)簽內(nèi)容。

m_time -= 1;
if(m_time <= 0)
{
    ui->label_time->hide();
    ui->pushButton->show();
    if (m_vCodeTimer->isActive())
    {
        m_vCodeTimer->stop();
    }
    m_time = 60;
}
else{
    ui->label_time->setText(QString::number(m_time) +QStringLiteral("s后重新發(fā)送"));
}

到此這篇關(guān)于Qt實現(xiàn)自定義驗證碼輸入框控件的方法的文章就介紹到這了,更多相關(guān)Qt 驗證碼輸入框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Windows C++ 應(yīng)用程序通用日志組件的使用詳解

    基于Windows C++ 應(yīng)用程序通用日志組件的使用詳解

    眾所周知,在調(diào)試、跟蹤和執(zhí)行應(yīng)用程序的過程中,程序的日志能為這些工作提供大量有價值的運(yùn)行信息。因此,程序的日志對應(yīng)用程序的運(yùn)行、維護(hù)至關(guān)重要
    2013-05-05
  • C語言實現(xiàn)貪吃蛇游戲演示

    C語言實現(xiàn)貪吃蛇游戲演示

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)貪吃蛇游戲演示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ 多重繼承和虛擬繼承對象模型、效率分析

    C++ 多重繼承和虛擬繼承對象模型、效率分析

    本文簡單介紹多態(tài)和多重繼承、虛擬繼承的基本概念。隨后重點分析了C++中對象模型之間的差異和運(yùn)行效率
    2014-08-08
  • 詳細(xì)分析c++ const 指針與指向const的指針

    詳細(xì)分析c++ const 指針與指向const的指針

    這篇文章主要介紹了c++ const 指針與指向const的指針的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 詳解C語言之文件操作下)

    詳解C語言之文件操作下)

    這篇文章主要介紹了關(guān)于C語言文件操作方法的相關(guān)資料,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-11-11
  • C語言練習(xí)題:自由落體的小球簡單實例

    C語言練習(xí)題:自由落體的小球簡單實例

    下面小編就為大家?guī)硪黄狢語言練習(xí)題:自由落體的小球簡單實例。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • 簡明的C++函數(shù)指針學(xué)習(xí)教程

    簡明的C++函數(shù)指針學(xué)習(xí)教程

    這篇文章主要介紹了C++函數(shù)指針的學(xué)習(xí)教程,講到了函數(shù)指針的定義及把指針作為函數(shù)參數(shù)進(jìn)行傳遞的用法,需要的朋友可以參考下
    2016-04-04
  • C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等

    C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等

    這篇文章主要為大家詳細(xì)介紹了C++如何獲取系統(tǒng)信,C++獲取IP地址、硬件信息等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • C++ 反射機(jī)制詳解及實例代碼

    C++ 反射機(jī)制詳解及實例代碼

    這篇文章主要介紹了C++ 反射機(jī)制詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 基于C++實現(xiàn)日期計算器的詳細(xì)教程

    基于C++實現(xiàn)日期計算器的詳細(xì)教程

    在現(xiàn)代社會中,計算器已經(jīng)進(jìn)入了每一個家庭,人們在生活和學(xué)習(xí)中經(jīng)常需要使用到計算器,下面這篇文章主要給大家介紹了關(guān)于基于C++實現(xiàn)日期計算器的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論

清丰县| 黄平县| 巴彦县| 临西县| 正宁县| 深州市| 三河市| 凤冈县| 兴化市| 临洮县| 东乡族自治县| 康保县| 保靖县| 澳门| 库尔勒市| 延边| 岚皋县| 昭苏县| 屏山县| 桑植县| 平和县| 辉南县| 景洪市| 东阳市| 陆河县| 新晃| 六安市| 固阳县| 施秉县| 民县| 榕江县| 林州市| 奉贤区| 安西县| 青冈县| 望城县| 义马市| 陆良县| 桂阳县| 盐山县| 余江县|