日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Qt】Qt登录对话框(纯代码实现)

發布時間:2024/4/24 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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登录对话框(纯代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。