Qt实现登录界面

本文基于Qt实现一个简单的登录界面,主要使用到Widget、button、edit等控件,基于自定义的信号槽实现界面的跳转,使用绘图设备添加背景图等。

1. 创建主界面

设计主界面的样式,并添加相关的控件。如下显示:

代码如下:

2. 创建欢迎界面(登录成功之后的界面)

欢迎界面比较简单,就添加了一个返回按钮。代码如下:

3. 添加登录界面的逻辑

cpp 复制代码
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 退出
    connect(ui->btnExit, &QPushButton::clicked, this, &QWidget::close);
    userWindow = new UserWindow();
    // 主界面接收欢迎界面的退出信号以返回到登录界面
    connect(userWindow, &UserWindow::backHome, this, [=]{
        userWindow->hide();
        this->show();
    });
    
    // 登录
    QString realPwd = "123456";
    QString realUser = "user";
    connect(ui->btnLogin, &QPushButton::clicked, this, [=]{
        QString pwd = ui->pwdEdit->text();
        QString user = ui->userNameEdit->text();
        if (pwd == realPwd && realUser == user) {
            this->hide();
            userWindow->show();
        } else {
            QMessageBox::warning(this, "提示", "账号或密码错误!");
        }
    });
}

4. 添加欢迎界面的逻辑

cpp 复制代码
UserWindow::UserWindow(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::UserWindow)
{
    ui->setupUi(this);
    // 退出按钮发送退出信号,以回退到登陆界面
    connect(ui->btnBack, &QPushButton::clicked, [=]{
        emit backHome();
    });
}

// 重写绘图事件函数,以添加背景图
void UserWindow::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(":/image/OIP-C.jfif");
    painter.drawPixmap(0, 0, this->width(), this->height(), pix);
}

在头文件中添加退出信号和绘图事件函数:

cpp 复制代码
class UserWindow : public QWidget
{
    Q_OBJECT

public:
    explicit UserWindow(QWidget *parent = nullptr);
    ~UserWindow();
    // 绘图事件函数
    void paintEvent(QPaintEvent* event);
// 在此处添加退出信号
signals:
    void backHome();

private:
    Ui::UserWindow *ui;
};

5. 实现效果

登录界面:

欢迎界面:

点击退出后即回到登陆界面。

相关推荐
论迹复利几秒前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin21 分钟前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c27 分钟前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机1 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
LorryJovens2 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx3 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
卢锡荣4 小时前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
Freak嵌入式4 小时前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
Casual4 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
cfm_29145 小时前
线程池阻塞队列
java·开发语言