QT多个界面

主函数

复制代码
#include "widget.h"
#include "second.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    Second s;
    QObject::connect(&w,&Widget::my_signals,&s,&Second::my_slots);
    w.show();
    return a.exec();
}

一级界面测试文件

复制代码
#include "widget.h"  
#include "ui_widget.h"  
#include <QDebug> // 引入QDebug类,但在这段代码中未直接使用  
  
// Widget类的构造函数  
Widget::Widget(QWidget *parent)  
    : QWidget(parent) // 调用父类的构造函数,传入父QWidget指针  
    , ui(new Ui::Widget) // 创建Ui::Widget的实例,用于管理UI  
{  
    ui->setupUi(this); // 初始化UI界面  
  
    // 设置label的背景图片,并使其内容缩放以适应label的大小  
    ui->label->setPixmap(QPixmap(":/pictrue/zz.gif"));  
    ui->label->setScaledContents(true);  
  
    // 设置第二个label的背景图片,并使其内容缩放以适应label的大小  
    ui->label_2->setPixmap(QPixmap(":/pictrue/userName.jpg"));  
    ui->label_2->setScaledContents(true);  
  
    // 设置第三个label的背景图片,并使其内容缩放以适应label的大小  
    ui->label_3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));  
    ui->label_3->setScaledContents(true);  
  
    // 设置第二个输入框为密码模式,输入的文本将显示为圆点  
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);  
  
}  
  
// Widget类的析构函数  
Widget::~Widget()  
{  
    delete ui; // 释放Ui::Widget实例所占用的内存  
}  
  
// 处理第三个按钮(登录按钮)点击事件的槽函数  
void Widget::on_pushButton_3_clicked()  
{  
    // 获取ui界面的账号和密码  
    QString userName = ui->lineEdit->text();  
    QString passwd = ui->lineEdit_2->text();  
  
    // 判断账号密码是否正确  
    if(userName == "admin" && passwd == "123456")  
    {  
        // 显示一个信息对话框,提示登录成功  
        QMessageBox msg(QMessageBox::Information,"提醒","登录成功!",  
                        QMessageBox::Ok,this);  
        int ret=msg.exec(); // 执行对话框,并等待用户响应  
        if(ret==QMessageBox::Ok)  
        {  
            emit my_signals(); // 发射自定义信号  
            this->close(); // 关闭当前窗口  
        }  
    }  
    else  
    {  
        // 显示一个警告对话框,询问是否重新登入  
        QMessageBox msg(QMessageBox::Warning,"登入失败","是否重新登入!",  
                        QMessageBox::Yes|QMessageBox::No,this);  
        int ret=msg.exec(); // 执行对话框,并等待用户响应  
        if(ret==QMessageBox::Yes)  
        {  
            ui->lineEdit->clear(); // 清除账号输入框  
            ui->lineEdit_2->clear(); // 清除密码输入框  
        }  
        else  
        {  
            this->close(); // 关闭当前窗口  
        }  
    }  
}  
  
// 处理第四个按钮(退出按钮)点击事件的槽函数  
void Widget::on_pushButton_4_clicked()  
{  
    // 显示一个询问对话框,询问是否退出登入  
    QMessageBox msg(QMessageBox::Question,"提醒","是否退出登入!",  
                    QMessageBox::Yes|QMessageBox::No,this);  
    int ret=msg.exec(); // 执行对话框,并等待用户响应  
    if(ret==QMessageBox::Yes)  
    {  
        this->close(); // 退出并关闭当前窗口  
    }  
    else  
    {  
        msg.close(); // 关闭对话框但不执行其他操作  
    }  
}

一级界面头文件

复制代码
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void my_signals();

private slots:
    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

二级界面测试文件

复制代码
#include "second.h"
#include "ui_second.h"

Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);
}

Second::~Second()
{
    delete ui;
}
void Second::my_slots()
{
    this->show();
}

二级界面头文件

复制代码
#ifndef SECOND_H
#define SECOND_H

#include <QWidget>

namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();
public:
    void my_slots();

private:
    Ui::Second *ui;
};

#endif // SECOND_H
相关推荐
dllxhcjla几秒前
苍穹外卖2
java
迷藏4942 分钟前
**发散创新:Go语言中基于上下文的优雅错误处理机制设计与实战**在现代后端开发中,**错误处理**早已不是简单
java·开发语言·后端·python·golang
猿小喵2 分钟前
MySQL数据库参数解读-第二篇
数据库·mysql
逆境不可逃5 分钟前
【用AI学Agent】Agent入门进阶:Prompt工程
大数据·数据库·人工智能
杰克尼6 分钟前
知识点总结--day10(Spring-Cloud框架)
java·开发语言
gelald9 分钟前
Spring - AOP 原理
java·后端·spring
zwqwyq10 分钟前
springboot与springcloud对应版本
java·spring boot·spring cloud
PD我是你的真爱粉11 分钟前
MySQL 索引深度解析:从底层结构到实战优化
数据库·mysql
okiseethenwhat12 分钟前
Java 内部类详解
java·开发语言
AlickLbc13 分钟前
达梦数据库使用体验记录(1-数据库安装篇)
数据库