【Qt】Qt登录对话框(纯代码实现)
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發環境
- 03. 程序設計
- 04. 程序測試
- 05. 預留
- 06. 附錄
01. 概述
實現登錄對話框。
02. 開發環境
Windows系統:Windows10
Qt版本:Qt5.15或者Qt6
03. 程序設計
3.1 新建Qt Widgets Application,項目名稱為3Login,在類信息頁面保持類名和基類為MainWindow和QMainWindow不變,取消選擇創建界面選項,如下圖所示。
3.2 **創建登錄對話框類。**往項目中添加新文件,模板選擇C++分類中的C++ Class,如下圖所示。
在類定義頁面,將類名設置為LoginDialog,基類選擇Custom定制,然后手動設置為QDialog。如下圖所示。
設置完成后,先打開logindialog.h文件,將其內容修改如下圖所示。
#ifndef LOGINDIALOG_H #define LOGINDIALOG_H#include <QDialog>class QLabel; class QLineEdit; class QPushButton;class LoginDialog : public QDialog {Q_OBJECT public:explicit LoginDialog(QWidget *parent = 0);~LoginDialog();private:QLabel *userLabel;QLabel *pwdLabel;QLineEdit *userEditLine;QLineEdit *pwdEditLine;QPushButton *loginBtn;QPushButton *exitBtn; };#endif // LOGINDIALOG_H先添加了QDialog類的頭文件,然后前置聲明了QLabel、QLineEdit和QPushButton類,這是因為在下面只是定義了這些類對象的指針,并不需要該類完整的定義,所以可以將它們的包含語句放到源文件中進行。在LoginDialog類聲明的開始需要添加Q_OBJECT宏才能使用信號和槽等元對象系統功能。在private部分定義了一些界面上需要的部件對象的指針。下面到logindialog.cpp文件中對這些部件對象進行初始化,其內容如下圖所示。
#include "logindialog.h"#include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBox>LoginDialog::LoginDialog(QWidget *parent):QDialog(parent) {userLabel = new QLabel(this);userLabel->move(70, 80);userLabel->setText(tr("用戶名"));userEditLine = new QLineEdit(this);userEditLine->move(140, 80);userEditLine->setPlaceholderText(tr("請輸入用戶名"));pwdLabel = new QLabel(this);pwdLabel->move(70, 130);pwdLabel->setText(tr("密碼"));pwdEditLine = new QLineEdit(this);pwdEditLine->move(140, 130);pwdEditLine->setPlaceholderText(tr("請輸入密碼"));loginBtn = new QPushButton(this);loginBtn->move(50, 200);loginBtn->setText(tr("登錄"));exitBtn = new QPushButton(this);exitBtn->move(210, 200);exitBtn->setText(tr("退出"));}LoginDialog::~LoginDialog() {}這里定義了構造函數和析構函數,在構造函數中對界面部件進行了初始化,設置了它們的位置及要顯示的文本,這些代碼實現的效果與前面在設計模式設置部件實現的效果是一樣的。簡單舉例:move(70, 80)就是將部件左上角的坐標設置為(70, 80),這個坐標是父窗口部件的,這里就是登錄對話框,對話框的左上角是(0, 0)點;setText()就是設置顯示文本;setPlaceholderText()是設置占位符文本。
3.3 修改main.cpp文件
下面打開main.cpp文件,在其中使用登錄對話框,更改代碼如下圖所示
#include "mainwindow.h"#include <QApplication> #include "logindialog.h"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;}}運行程序執行結果如下:
3.4 登錄功能實現
首先在logindialog.h文件的類聲明的最后添加如下代碼:
#ifndef LOGINDIALOG_H #define LOGINDIALOG_H#include <QDialog>class QLabel; class QLineEdit; class QPushButton;class LoginDialog : public QDialog {Q_OBJECT public:explicit LoginDialog(QWidget *parent = 0);~LoginDialog();//槽函數 private slots:void login();private:QLabel *userLabel;QLabel *pwdLabel;QLineEdit *userEditLine;QLineEdit *pwdEditLine;QPushButton *loginBtn;QPushButton *exitBtn; };#endif // LOGINDIALOG_H下面打開logindialog.cpp文件,在構造函數的最后添加如下圖所示的兩行代碼。
//信號與槽關聯connect(loginBtn, &QPushButton::clicked, this, &LoginDialog::login);connect(exitBtn, &QPushButton::clicked, this, &LoginDialog::close);下面在logindialog.cpp文件最后添加槽的定義
void LoginDialog::login() {//判斷用戶名和密碼是否正確if (userEditLine->text().trimmed() == tr("tom") &&pwdEditLine->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用戶名或者密碼錯誤"), QMessageBox::Yes);}userEditLine->clear();pwdEditLine->clear();userEditLine->setFocus(); }04. 程序測試
略
05. 預留
06. 附錄
源碼下載:登錄對話框(純代碼實現).rar
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【Qt】Qt登录对话框(纯代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】Qt登录对话框(设计器实现)
- 下一篇: 【Qt】Qt资源应用--菜单图标