【Qt】Qt登录对话框(设计器实现)
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發環境
- 03. 程序設計
- 04. 登錄判斷
- 05. 程序測試
- 06.附錄
01. 概述
在彈出對話框中填寫用戶名和密碼,按下登錄按鈕,如果用戶名和密碼均正確則進入主窗口,如果有錯則彈出警告對話框。
02. 開發環境
Windows系統:Windows10
Qt版本:Qt5.15或者Qt6
03. 程序設計
3.1 新建Qt Widgets Application,項目名稱為login,類名和基類保持MainWindow和QMainWindow不變。
3.2 完成項目創建后,向項目中添加新的Qt設計師界面類,模板選擇Dialogwithout Buttons,類名更改為LoginDialog。完成后向界面上添加兩個標簽Label、兩個行編輯器Line Edit和兩個按鈕Push Button,設計界面如下圖所示。
3.3 先選中用戶名后面的行編輯器部件,然后在屬性編輯器中將其objectName屬性更改為usrLineEdit,如下圖所示。下面依次更改其他部件的objectName屬性,密碼后面的行編輯器為pwdLineEdit,登錄按鈕為loginBtn,退出按鈕為exitBtn。
3.4 下面使用另外一種信號和槽的關聯方法來設置退出按鈕。在設計模式下方的信號和槽編輯器(Signals & Slots Editor)中,先點擊左上角的綠色加號添加關聯,然后選擇發送者為exitBtn,信號為clicked(),接收者為LoginDialog,槽為close()。如下圖所示。這樣,當單擊退出按鈕時,就會關閉登錄對話框。
3.5 右擊登錄按鈕,在彈出的菜單中選擇“轉到槽…”,然后選擇clicked()信號并確定。轉到相應的槽以后,添加函數調用:
void LoginDialog::on_loginBtn_clicked() {accept(); }3.6 main.cpp文件,更改內容如下:
int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;LoginDialog dlg;if (dlg.exec() == QDialog::Accepted){w.show();return a.exec();}else{return 0;} }運行程序,按下退出按鈕會退出程序,按下登錄按鈕會關閉登錄對話框,并顯示主窗口。
04. 登錄判斷
4.1 接下來添加代碼來實現使用用戶名和密碼登錄,這里只是簡單將用戶名和密碼設置為了固定的字符串,如果以后學習了數據庫,還可以通過讀取數據庫來獲取用戶名和密碼。到logindialog.cpp文件中將登錄按鈕的單擊信號對應的槽的代碼更改為:
void LoginDialog::on_loginBtn_clicked() {//判斷用戶名和密碼是否正確if (ui->usrLineEdit->text() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用戶名和密碼錯誤"),QMessageBox::Yes);} }4.2 下面運行程序,如果輸入用戶名為“tom”,密碼為“123456”,那么可以登錄,如果輸入其他的字符,則會彈出警告對話框,如下圖所示。
4.3 對于輸入的密碼,我們常見的是顯示成小黑點的樣式。下面點擊logindialog.ui文件進入設計模式,然后選中界面上的密碼行編輯器,在屬性編輯器中將echoMode屬性選擇為Password。
這時再次運行程序,可以看到密碼顯示已經改變了。如下圖所示。
當然,除了在屬性編輯器中進行更改,也可以在loginDialog類的構造函數中使用setEchoMode(QLineEdit::Password)函數來設置。
4.4 在行編輯器的屬性欄中還可以設置占位符,就是沒有輸入信息前的一些提示語句。例如將密碼行編輯器的placeholderText屬性更改為“請輸入密碼”,將用戶名行編輯器的更改為“請輸入用戶名”。
運行效果如下圖所示
4.5 對于行編輯器,還有一個問題就是,比如我們輸入用戶名,在前面添加了一個空格,這樣也可以保證輸入是正確的,這個可以使用QString類的trimmed()函數來實現,它可以去除字符串前后的空白字符。下面將logindialog.cpp文件中登錄按鈕單擊信號槽函數中的判斷代碼更改為
void LoginDialog::on_loginBtn_clicked() {//判斷用戶名和密碼是否正確if (ui->usrLineEdit->text().trimmed() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用戶名和密碼錯誤"),QMessageBox::Yes);}}4.6 最后,當登錄失敗后,我們希望可以清空用戶名和密碼信息,并將光標定位到用戶名輸入框中。這個可以通過在判斷用戶名和密碼錯誤后添加相應的代碼來實現:
void LoginDialog::on_loginBtn_clicked() {//判斷用戶名和密碼是否正確if (ui->usrLineEdit->text().trimmed() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用戶名和密碼錯誤"),QMessageBox::Yes);//清空內容,設置定位光標ui->usrLineEdit->clear();ui->pwdLineEdit->clear();ui->usrLineEdit->setFocus();}}05. 程序測試
06.附錄
代碼下載:登錄對話框(設計器實現).rar
總結
以上是生活随笔為你收集整理的【Qt】Qt登录对话框(设计器实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】Qt窗口程序
- 下一篇: 【Qt】Qt登录对话框(纯代码实现)