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
相关推荐
Roselind_Yi2 小时前
池化对比:CNN池化 VS Java线程池
java·人工智能·经验分享·笔记·深度学习·神经网络·cnn
电魂泡哥8 小时前
SQL出现filesort 一定慢吗
数据库·sql
muddjsv10 小时前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor10 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
yangshicong10 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
chimchim6611 小时前
pg dblink使用查询
数据库
Java面试题总结11 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
苦逼的猿宝12 小时前
学生心理咨询评估系统
java·毕业设计·springboot·计算机毕业设计
隔窗听雨眠12 小时前
doctype、charset、meta如何控制整个渲染流水线
java·服务器·前端
绝知此事12 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树