有時候在登入介面需要驗證碼功能,這樣能夠防止被惡意程式攻擊,驗證碼必須動態隨機產生,並且有一定的識別難度。
解決方案:
1.隨機產生驗證碼
2.在驗證碼區域繪製雜訊
3.驗證碼顏色隨機變化
4.繼承已有qlabel控制項進行重繪
隨機產生驗證碼:
for (int i = 0; i < letter_number; ++i) //letter_number為驗證碼位數
verificationcode[i] = producerandomletter(); //函式裡面隨機產生乙個數字 大小寫字母
隨機生成顏色:
for (int i = 0; i
< letter_number; ++i)
verificationcode[i] = producerandomletter();
繪製雜訊:
for (int j = 0; j < noice_point_number; ++j) //noice_point_number雜訊點數
**:
verificationcodelabel.h
#ifndef verificationcodelabel_h
#define verificationcodelabel_h
#include
class verificationcodelabel : public qlabel
; //這是乙個用來生成驗證碼的函式
void produceverificationcode() const;
//產生乙個隨機的字元
qchar producerandomletter() const;
//產生隨機的顏色
void producerandomcolor() const;
qchar *verificationcode;
qcolor *colorarray;
};#endif // verificationcodelabel_h
verificationcodelabel.cpp
#include "verificationcodelabel.h"
#include
#include
#include
verificationcodelabel::verificationcodelabel(qwidget *parent)
: qlabel(parent)
//重寫繪製事件,以此來生成驗證碼
void verificationcodelabel::paintevent(qpaintevent *event)
//繪製噪點
for (int j = 0; j < noice_point_number; ++j) //noice_point_number雜訊點數
return;
}//這是乙個用來生成驗證碼的函式
void verificationcodelabel::produceverificationcode() const
//產生乙個隨機的字元
qchar verificationcodelabel::producerandomletter() const
return c;
}//產生隨機的顏色
void verificationcodelabel::producerandomcolor() const
//返回乙個字串(字母一律都按照大寫返回)
qstring verificationcodelabel::getverificationcode() const
return s;
}//重新整理驗證碼,在使用者不確定的時候進行相應重新整理
void verificationcodelabel::slt_reflushverification()
verificationcodelabel::~verificationcodelabel()
在.ui介面將對應的qlabel類物件提公升為當前類即可 Qt 登入對話方塊顯示
今天我們來講一講qt中對話方塊的使用,通過本篇部落格你會學會如何編寫乙個簡單的對話方塊,我們以最常見的登入對話方塊為例。首先,要強調的是,qdialog是所有qt對話方塊視窗的基類,它繼承自qwidget。我們自定義乙個對話方塊類clogindlg,很明顯它要繼承自qdialog,因此必須包含基類q...
Qt之標準對話方塊 顏色對話方塊
1 在標頭檔案中包含 include qcolordialog void widget on colorbutton clicked 這裡使用了qcolordialog的靜態函式getcolor 來獲取顏色,它的三個引數的作用分別是 設定初始顏色 指定父視窗和設定對話方塊標題。getcolor 函式...
Qt 對話方塊
1.qt 中使用qdialog 類實現對話方塊。就像主視窗一樣,我們通常會設計乙個類繼承 qdialog qdialog 及其子類,以及所有 qt dialog 型別的類 的對於其 parent 指標都有額外的解釋 如果 parent 為null 則該對話方塊會作為乙個頂層視窗,否則則作為其父元件的...