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
相关推荐
CookieCrusher1 小时前
数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
运维·数据库·windows·安全·文件加密·数据防泄漏·dlp
这周也會开心2 小时前
SQL-窗口函数
数据库·sql
坐吃山猪3 小时前
SpringBoot01-配置文件
java·开发语言
TDengine (老段)4 小时前
TDengine 时间函数 WEEKDAY() 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
我叫汪枫4 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
TDengine (老段)4 小时前
从 ETL 到 Agentic AI:工业数据管理变革与 TDengine IDMP 的治理之道
数据库·数据仓库·人工智能·物联网·时序数据库·etl·tdengine
yaoxtao4 小时前
java.nio.file.InvalidPathException异常
java·linux·ubuntu
FPGAI5 小时前
Qt编程之信号与槽
开发语言·qt
Swift社区5 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
LQ深蹲不写BUG6 小时前
MySql的事务机制
数据库·mysql