QT多界面跳转,界面之间传递参数

1.多界面跳转
             A界面跳到B界面,不需要返回(B不可以回到A)
             A界面跳到B界面,需要返回(B还可以回到A)

   2.如何在QT工程中新增界面(新增主窗口)
            步骤: 右键点击工程名--》选择add new--》选择QT,选择QT设计师界面类--》模板选择MainWindow,名字自己取

   3.跳到下一个界面,不需要返回
             //跳到下一个界面
            secondwin *newwin=new secondwin();
            newwin->show();
            //把登录界面关闭
            this->close();

      跳到下一个界面,需要返回
            //跳到下一个界面
            secondwin *newwin=new secondwin(this);  //此时必须传递this指针,原因是下一个界面可以通过这个this指针找到上一级的界面的地址
            newwin->show();
            //把登录界面隐藏
            this->hide();  //隐藏是把界面转入到系统后面偷偷摸摸运行

             //返回上一级界面
            QWidget *p=this->parentWidget(); //得到上一级界面的地址
            p->show();
            //当前主界面关闭
           delete this;

   4.界面之间传递参数(本质上类和类之间传递参数)
            A界面--》登录界面(输入了用户名和密码)
            B界面--》主界面
            要求把A界面的数据(用户名和密码)传递给B界面
     方法思路:
             在B界面类中定义公有方法获取A界面传递的参数,在创建B界面对象的时候,调用这个公有方法就可以把参数传递给B界面

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "secondwin.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    flag=0;
}

MainWindow::~MainWindow()
{
    delete ui;
}

//登录按钮的槽函数
void MainWindow::on_loginbt_clicked()
{
    static int n=0;
    //获取输入框中输入的用户名和密码
    QString name=ui->namele->text();
    QString passwd=ui->passle->text();

    //判断用户名或者密码是否正确
    if(name=="gec" && passwd=="123456")
    {
        qDebug()<<"第一个界面的地址是: "<<this;
        //跳到下一个界面
        secondwin *newwin=new secondwin(this);
        newwin->getattr(name,passwd);
        newwin->show();
        //把登录界面隐藏
        this->hide();  //隐藏是把界面转入到系统后面偷偷摸摸运行
    }
    else
    {
        n++;
        if(n>=3)
        {
            ui->namele->setEnabled(false);
            ui->passle->setEnabled(false);
        }
    }
}
//显示/隐藏密码
void MainWindow::on_showbt_clicked()
{
    flag++;
    if(flag%2==1)
         ui->passle->setEchoMode(QLineEdit::Normal);
    else
        ui->passle->setEchoMode(QLineEdit::Password);
}

#include "secondwin.h"
#include "ui_secondwin.h"
#include "ledwin.h"  //控灯的子界面
#include "airwin.h"  //控制空调的子界面
#include <QDebug>
secondwin::secondwin(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::secondwin)
{
    ui->setupUi(this);
    qDebug()<<"传递过来第一个界面的地址是: "<<parent;
}

secondwin::~secondwin()
{
    delete ui;
}
//该函数专门用来接收第一个界面传递的参数
void secondwin::getattr(QString _name, QString _passwd)
{
    qDebug()<<"传递过来的账号是: "<<_name;
    qDebug()<<"传递过来的密码是: "<<_passwd;
    //把传递过来的信息在标签上刷出来
    ui->msgle->setText(_name+":"+_passwd);
}
//返回到上一级界面--》登录界面
void secondwin::on_pushButton_5_clicked()
{
    //返回上一级界面
    QWidget *p=this->parentWidget(); //得到上一级界面的地址
    qDebug()<<"p指向的地址是: "<<p;
    p->show();
    //当前主界面关闭
    delete this;
}
//控灯
void secondwin::on_pushButton_clicked()
{
    ledwin *newwin=new ledwin(this);
    newwin->show();
    //当前窗口隐藏
    this->hide();
}
//控制空调
void secondwin::on_pushButton_2_clicked()
{
    airwin *newwin=new airwin(this);
    newwin->show();
    //当前窗口隐藏
    this->hide();
}

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值