当前位置: 首页 > wzjs >正文

绍兴中交水利水电建设有限公司网站网络推广优化培训

绍兴中交水利水电建设有限公司网站,网络推广优化培训,做ppt素材的网站有哪些,系统优化的方法论QT的多界面跳转以及界面之间传递参数 一、在QT工程中添加新的界面二、多界面跳转的两种情况1、A界面跳到B界面,不需要返回2、A界面跳到B界面,需要返回1)使用this指针传递将当前界面地址传递给下一界面2)使用parentWidget函数获取上…

QT的多界面跳转以及界面之间传递参数

  • 一、在QT工程中添加新的界面
  • 二、多界面跳转的两种情况
    • 1、A界面跳到B界面,不需要返回
    • 2、A界面跳到B界面,需要返回
      • 1)使用this指针传递将当前界面地址传递给下一界面
      • 2)使用parentWidget函数获取上一级窗口的指针
      • 示例代码:
  • 三、界面之间传递参数(本质上是类跟类之间传递信息)
    • 1、B界面的类中定义了一个公有的方法,通过调用这个公有方法把参数传递过去
    • 2、通过自定义信号来传递参数(发送信号,信号带参数)

一、在QT工程中添加新的界面

右键点击工程名–》选择添加新文件–》QT–》QT设计师界面类–》模板选择MainWindow
详细步骤如下:
1、
在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述
4、
在这里插入图片描述
5、
在这里插入图片描述

二、多界面跳转的两种情况

1、A界面跳到B界面,不需要返回

//创建主界面对象
MainWindow *newwin=new MainWindow(); //堆空间
//把主界面显示出来
newwin->show();
//把登录界面关闭 ,与需要返回的差别
this->close();

2、A界面跳到B界面,需要返回

1)使用this指针传递将当前界面地址传递给下一界面

// 创建主界面对象
MainWindow *newwin=new MainWindow(this); //此时必须传递this,原因是返回的时候需要根据这个this找到上一级窗口的地址
qDebug()<<"登录界面的首地址是: "<<this;
//把主界面显示出来
newwin->show();
//把登录界面隐藏--》把登录界面转入系统后台运行
this->hide();

2)使用parentWidget函数获取上一级窗口的指针

QWidget *QWidget::parentWidget() const  返回值:返回上一级窗口的指针原理:当初你跳到下一个界面的时候必须把当前界面的地址传递给下一个界面

示例代码:

// 第二个界面:info_win.cpp
#include "info_win.h"
#include "ui_info_win.h"
#include <QDebug>
#include <QWidget>info_win::info_win(QWidget *parent) :QMainWindow(parent),ui(new Ui::info_win)
{ui->setupUi(this);save_mainwin = parent;qDebug()<<"传递过来的参数是第一个界面的地址:"<<parent;
}info_win::~info_win()
{delete ui;
}
//返回上一级界面按钮的槽函数(第一个界面,登录界面)
void info_win::on_btn_back_clicked()
{//得到上一级界面的地址//思路1:当初创建第二个界面的时候,把第一个界面的地址通过构造函数传递过来//      定义的私有成员save_mainwin就是用来保存传递过来的第一个界面的地址// 显示上级界面
//    save_mainwin->show();//思路2:QT提供了一个函数,叫做parentWidget(),该函数用来返回上一级界面地址QWidget *main_win = this->parentWidget();main_win->show();qDebug()<<"main_win界面地址:"<<main_win;//关闭当前(第二个界面)界面delete this;    // this->close();
}// info_win.h
#ifndef INFO_WIN_H
#define INFO_WIN_H#include <QMainWindow>namespace Ui {
class info_win;
}class info_win : public QMainWindow
{Q_OBJECTpublic:explicit info_win(QWidget *parent = nullptr);~info_win();private slots:void on_btn_back_clicked();private:Ui::info_win *ui;QWidget *save_mainwin;
};#endif // INFO_WIN_H

三、界面之间传递参数(本质上是类跟类之间传递信息)

A界面传递参数给B界面(A是第一个界面,B是第二个界面)

1、B界面的类中定义了一个公有的方法,通过调用这个公有方法把参数传递过去

// A界面

// 第一个界面:// mainwindow.h#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "info_win.h"
#include <QString>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}
// 登录按钮的槽函数
void MainWindow::on_pushButton_clicked()
{// 获取输入的用户名和密码QString account = ui->lineEdit->text();QString pswd = ui->lineEdit_2->text();if(account == "aaa" && pswd == "123"){//创建第二个界面对象,必须传递this指针(把第一个界面的地址传给第二个界面)info_win *info_w = new info_win(this);// 将第一个界面的账号和密码传递给第二个界面info_w->getMsg(account, pswd);qDebug()<<"第一界面的地址是"<<this;// 显示第二个界面info_w->show();//隐藏第一个界面/*隐藏:把界面转入到系统后台运行,这个界面对象依然存在关闭:界面释放掉,对象不存在了*/this->hide();}else{qDebug()<<"账号或密码错误,重新输入";}
}

// B 界面

// 第二个界面
// info_win.h
#ifndef INFO_WIN_H
#define INFO_WIN_H#include <QMainWindow>namespace Ui {
class info_win;
}class info_win : public QMainWindow
{Q_OBJECTpublic:explicit info_win(QWidget *parent = nullptr);~info_win();void getMsg(QString account, QString pswd);private slots:void on_btn_back_clicked();private:Ui::info_win *ui;QWidget *save_mainwin;QString main_account;QString main_pswd;
};#endif // INFO_WIN_H// info_win.cpp
#include "info_win.h"
#include "ui_info_win.h"
#include <QDebug>
#include <QWidget>info_win::info_win(QWidget *parent) :QMainWindow(parent),ui(new Ui::info_win)
{ui->setupUi(this);save_mainwin = parent;qDebug()<<"传递过来的参数是第一个界面的地址:"<<parent;
}info_win::~info_win()
{delete ui;
}
// 获取第一个界面的账号和密码
void info_win::getMsg(QString account, QString pswd)
{main_account = account;main_pswd = pswd;qDebug()<<"第一个界面传递过来的账号和密码:"<<main_account<<"  "<<main_pswd;
}
//返回上一级界面按钮的槽函数(第一个界面,登录界面)
void info_win::on_btn_back_clicked()
{//得到上一级界面的地址//思路1:当初创建第二个界面的时候,把第一个界面的地址通过构造函数传递过来//      定义的私有成员save_mainwin就是用来保存传递过来的第一个界面的地址// 显示上级界面
//    save_mainwin->show();//思路2:QT提供了一个函数,叫做parentWidget(),该函数用来返回上一级界面地址QWidget *main_win = this->parentWidget();main_win->show();qDebug()<<"main_win界面地址:"<<main_win;//关闭当前(第二个界面)界面delete this;    // this->close();
}

2、通过自定义信号来传递参数(发送信号,信号带参数)

// 第一个界面:
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();signals: //自定义信号void sendSign(QString, QString);private slots:void on_pushButton_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "info_win.h"
#include <QString>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}
// 登录按钮的槽函数
void MainWindow::on_pushButton_clicked()
{// 获取输入的用户名和密码QString account = ui->lineEdit->text();QString pswd = ui->lineEdit_2->text();if(account == "aaa" && pswd == "123"){//创建第二个界面对象,必须传递this指针(把第一个界面的地址传给第二个界面)info_win *info_w = new info_win(this);// 将第一个界面的账号和密码传递给第二个界面 --信号发送connect(this, SIGNAL(sendSign(QString, QString)), info_w, SLOT(recvSlot(QString, QString)));emit sendSign(account, pswd);qDebug()<<"第一界面的地址是"<<this;// 显示第二个界面info_w->show();this->hide();}else{qDebug()<<"账号或密码错误,重新输入";}
}
// 第二个界面:
// info_win.h
#ifndef INFO_WIN_H
#define INFO_WIN_H#include <QMainWindow>namespace Ui {
class info_win;
}class info_win : public QMainWindow
{Q_OBJECTpublic:explicit info_win(QWidget *parent = nullptr);~info_win();//void getMsg(QString account, QString pswd);private slots:void on_btn_back_clicked();void recvSlot(QString account, QString pswd);private:Ui::info_win *ui;QWidget *save_mainwin;QString main_account;QString main_pswd;
};#endif // INFO_WIN_H// info_win.cpp
#include "info_win.h"
#include "ui_info_win.h"
#include <QDebug>
#include <QWidget>info_win::info_win(QWidget *parent) :QMainWindow(parent),ui(new Ui::info_win)
{ui->setupUi(this);save_mainwin = parent;qDebug()<<"传递过来的参数是第一个界面的地址:"<<parent;
}info_win::~info_win()
{delete ui;
}//返回上一级界面按钮的槽函数(第一个界面,登录界面)
void info_win::on_btn_back_clicked()
{//得到上一级界面的地址//思路1:当初创建第二个界面的时候,把第一个界面的地址通过构造函数传递过来//      定义的私有成员save_mainwin就是用来保存传递过来的第一个界面的地址// 显示上级界面
//    save_mainwin->show();//思路2:QT提供了一个函数,叫做parentWidget(),该函数用来返回上一级界面地址QWidget *main_win = this->parentWidget();main_win->show();qDebug()<<"main_win界面地址:"<<main_win;//关闭当前(第二个界面)界面delete this;    // this->close();
}void info_win::recvSlot(QString account, QString pswd)
{qDebug()<<"通过信号传递过来的参数"<<account<<"  "<<pswd;
}
http://www.dtcms.com/wzjs/225078.html

相关文章:

  • 成套小说网站模板百度账号是什么
  • 苏州前程无忧官上做网站seo搜索引擎是什么意思
  • 一个人做网站用什么技术网店推广渠道有哪些
  • 哪做网站广州番禺发布
  • 网站模板用什么做google官网登录
  • 手机网站制作价格佛山网站建设制作公司
  • 5000人朋友圈推广多少钱网站关键词排名怎么优化
  • 公司网站可以自己做百度指数查询手机版app
  • 网站运营队伍与渠道建设官方进一步优化
  • 江苏体育建设场地网站互联网营销师是干什么
  • 提供手机网站建设软件注册推广平台
  • 网站建设与维护毕业论文百度网首页官网登录
  • 深圳网站设计深圳网站建设网站排名优化技巧
  • 做网站推广那家好佛山本地网站建设
  • 济南做网站公司郑州网站技术顾问
  • 网站的优点有哪些方面百度排名优化
  • 家教补习中心网站建设百度快速收录软件
  • 项城注册公司代办公司湖南长沙seo
  • 长沙做网站最好的公司广州搜发网络科技有限公司
  • 前端兼职接单平台广告优化师怎么学
  • 南京网站群建设公司重庆森林讲了什么故事
  • 网站如何添加代码石家庄头条今日头条新闻
  • 环球资源网站网址湖南网站建设效果
  • 淘宝网站建设方案个人网站seo入门
  • 小伙做网色网站网站推广苏州
  • 个人网站制作教程视频百度竞价是什么意思?
  • 怎么样在网站上做跳转免费接单平台
  • 上海公安局 网站备案北京网站建设制作公司
  • 莞城区网站建设公司百度2022第三季度财报
  • 江西商城网站建设公司公司培训