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
相关推荐
曾经的三心草1 天前
JavaEE初阶-jvm
java·jvm·java-ee
醇氧1 天前
Idea防止工具栏自动隐藏
java·ide·intellij-idea
m0_639817151 天前
基于springboot教学资料管理系统【带源码和文档】
java·spring boot·后端
百***81271 天前
【HTML+CSS】使用HTML与后端技术连接数据库
css·数据库·html
靠沿1 天前
Java数据结构初阶——LinkedList
java·开发语言·数据结构
6***3491 天前
MySQL项目
数据库·mysql
qq_12498707531 天前
基于springboot的建筑业数据管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
木井巳1 天前
【MySQL数据库】数据库基础
数据库·mysql
Wang's Blog1 天前
MySQL: 查询全流程深度解析与性能优化实践指南
数据库·mysql·性能优化
lqj_本人1 天前
鸿蒙原生与Qt混合开发:性能优化与资源管理
qt·harmonyos