用简单的方法实现两个界面之间的跳转

1.新建一个带ui界面的工程,其基类为mainwindow

2.向工程中Add new添加一个新的界面

3.选中添加界面模板,可选择Dialog对话框类或者mainwindow类等,视情况而定。我这里选择mainwindow类

4.将新添加的界面的类名设置为与主页面不同的类名,如mainwindow2,之后点击下一步

工程构建如图

5.代码实现

主页面mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMouseEvent>
#include <QPushButton>
#include <QPoint>
#include <mainwindow2.h>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();void dealmainwindow2();           //处理子窗口槽函数private:Ui::MainWindow *ui;//定义关闭按钮QPushButton * btnClose;//定义QPoint坐标常量QPoint last;//声明新按钮QPushButton * btnopen;//声明新窗口MainWindow2 w2;private slots:void showMainwindow2();            //显示子页面槽函数//void reshowMainwindow();         //回到主页面槽函数protected:/**//私有信号保护//鼠标按下void MousePressEvent(QMouseEvent *e);//鼠标移动void MouseMoveEvent(QMouseEvent *e);//鼠标释放void MouseReleaseEvent(QMouseEvent *e);**/
};#endif // MAINWINDOW_H

主页面mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QIcon"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);/********************第一部分********************************/this->setWindowTitle("窗体变化");this->setMaximumSize(300,300);                      //最大尺寸this->setMinimumSize(300,300);                      //最小尺寸this->setStyleSheet("background:white");            //设置背景色this->setWindowIcon(QIcon(":/image/pig.ico"));      //设置窗体图片this->setWindowFlags(Qt::WindowCloseButtonHint);    //去掉最大化和最小化按钮,保留关闭按钮/**********************************************************//**************************第二部分*************************///新增关闭按钮btnClose = new QPushButton(this);btnClose->setText("关闭按钮");btnClose->move(100,100);//链接信号与槽函数connect(btnClose,SIGNAL(clicked()),this,SLOT(close()));//定义打开的第二个窗口的按钮btnopen = new QPushButton(this);btnopen->setGeometry(QRect(100,200,100,25));btnopen->setText("打开窗口");connect(btnopen,SIGNAL(clicked()),this,SLOT(showMainwindow2()));//connect(w2,SIGNAL(sensignal()),this,SLOT(reshowMainwindow()));//处理子窗口的信号connect(&w2,&MainWindow2::Mysignal,this,&MainWindow::dealmainwindow2);
/**********************************************************/}MainWindow::~MainWindow()
{delete ui;
}/**************************鼠标事件*************************/
/*
//
void MousePressEvent(QMouseEvent *e)
{QPoint last = e->globalPos();
}//
void MouseMoveEvent(QMouseEvent *e)
{QPoint last;int dx = e->globalX() - last.x();int dy = e->globalY() - last.y();last = e->globalPos();move(last.x() + dx, last.y() + dy);
}//
void MouseReleaseEvent(QMouseEvent *e)
{int dx = e->globalX() - last.x();int dy = e->globalY() - last.y();move(x()+dx, y()+dy);}*//**********************************************************/void MainWindow::dealmainwindow2()
{//按钮回到主窗口w2.hide();this->show();}void MainWindow::showMainwindow2()
{//按钮显示mainwindow2窗口w2.show();
}

子页面mainwindow2.h

#ifndef MAINWINDOW2_H
#define MAINWINDOW2_H#include <QMainWindow>
#include <QPushButton>
namespace Ui {class MainWindow2;
}class MainWindow2 : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow2(QWidget *parent = nullptr);~MainWindow2();void Sendslot();                //发送信号槽函数private:Ui::MainWindow2 *ui;signals:void Mysignal();                //返回值信号private:QPushButton *returnButton;      //控件声明private slots://void returnMainwindow();        //子页面};#endif // MAINWINDOW2_H

子页面mainwindow2.cpp

#include "mainwindow2.h"
#include "ui_mainwindow2.h"
#include <mainwindow.h>MainWindow2::MainWindow2(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow2)
{ui->setupUi(this);this->setWindowTitle("窗口2");this->resize(300,300);returnButton = new QPushButton(this);returnButton->setText("返回主窗口");returnButton->move(100,150);connect(returnButton,&QPushButton::clicked,this,&MainWindow2::Sendslot);}MainWindow2::~MainWindow2()
{delete ui;
}void MainWindow2::Sendslot()
{emit Mysignal();
}/*
void MainWindow2::returnMainwindow()
{this->close();}
*/

main.cpp不做改变,为默认

6.效果展示


7.不足与需改进之处

1.通过工程文件Add new添加一个新页面的方式,没能很好的通过槽函数的形式销毁界面。可以通过新建一个class界面类的方式更好的对界面进行操作转换

2.可通过调用函数的形式,实现界面的转换和销毁,待考究

3.这里取消了对鼠标事件的功能实现

8.改进

第二点已经就行优化

QT-功能-实现主页面和子页面之间的跳转(最简单)相关推荐

  1. HTML框架IFrame结合JS在主页面和子页面间传值

    下面主页面和子页面互相传值的DEMO 如果仅仅需要子页面触发主页面的函数 仅需 [ parent.window.你的函数 ] 就可以了 DOM方法: 父窗口操作IFRAME:window.frames ...

  2. 08﹑导航子页面切换功能5_实现导航栏子页面切换

    08﹑导航子页面切换功能5_实现导航栏子页面切换

  3. js父页面和子页面之间传值

    今天和朋友一块讨论,怎样通过js在父页面和子页面之间传值的问题,总结例如以下: 需求描写叙述:父页面有多个子页面.实如今父页面点击子页面,传值到子页面. 看着非常easy,试了好久.主要纠结在怎样获取 ...

  4. 页面之间的跳转方式和参数传递以及路由和生命周期

    微信小程序拥有web网页和Application共同的特征,我们的页面都不是孤立存在的,而是通过和其他页面进行交互,来共同完成系统的功能.今天我们来研究小程序页面之间的跳转方式. 1.概述 在Andr ...

  5. Android深入浅出系列之实例应用—手机页面之间的跳转

    在网页里,我们可以通过超级链接从一个网页跳转到另外一个网页,在手机里面,要如何实现手机页面之间的跳转呢? 原理:通过布局文件和setContentView()方法配合来实现.通过点击第一个布局文件ma ...

  6. java中程序跳转_java程序中先后台交互的两种实现方式以及页面之间的跳转

    虽然如今市面上很流行先后端分离,可是在不少企业中仍是使用的是SSH框架,先后端不分离. 那么此类先后端有其自身独特的先后台交互的方式,可是也支持js/jquery.下面对这两种方式作一下概括.java ...

  7. 页面之间的跳转与交互

    前言:想写这篇的原因,学到location对象以及之前大web大作业,想实现多个页面之间的跳转只能够通过a标签来实现,但是有些地方只用a标签显然是不够的,最终还是没有解决,全都是使用a标签--现在可以 ...

  8. 微信小程序实现两个页面之间的跳转

    两个简单的页面 点击链接实现在两个页面之间的跳转 图片和文字自行设置 步骤 1:创建项目 2:删除多余无用文件和代码 最新版的微信开发者工具不支持创建空白项目,我们需要把原来多余的文件和代码删除 需要 ...

  9. 利用计算机浏览信息,利用计算机浏览信息时,可以实现任意页面之间的跳转,这种技术最恰当的说法是(??)...

    利用计算机浏览信息时,可以实现任意页面之间的跳转,这种技术最恰当的说法是(??) 小儿推拿经穴大多集中于A:腰背部B:胸腹部C:头面部D:上肢部E:下肢部 做作屈伸练习前直后转时,髋关节及整个身体转向 ...

  10. iframe 父页面与子页面之间的方法的相互调用

    2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...

最新文章

  1. C++关键字const
  2. 头条创始人张一鸣没有任何大厂经验,是怎么做出这么厉害的产品的呢,以及管理这么大的团队呢?...
  3. 用于传递列表作为选项的argparse选项
  4. document的createElement方法创建具有指定标签的DOM对象
  5. 手机更新找不到计算机,为什么手机更新换代这么快,电脑的更新却没有这么快呢...
  6. Javascript——声明提升(函数、变量提升)
  7. Android中样式及主题
  8. java project 连接hibernate 出错
  9. dueros基于什么开发的_干货丨超详细!DuerOS开发套件申请攻略!
  10. php隔行符,PHP PHP_EOL 换行符
  11. springboot 毕业设计管理系统
  12. Hibernate技术
  13. matlab 平滑曲线连接_Matlab的5个控制类工具箱介绍
  14. 娱乐小工具微信小程序源码下载/支持多种流量主
  15. 电工技术(3)—电路的分析方法二
  16. 苹果各版本手机更换电池的视频
  17. C语言实现哈夫曼树求解及其编码输出
  18. 开发3D游戏建模都需要哪些软件?软件繁多,如何从中挑选学习?
  19. 使html轮廓颜色不同,css中border颜色不同怎么设置?
  20. 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪

热门文章

  1. 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
  2. 【Access2003】表的新建、用sql语句查询;关闭警告信息;修改数据库密码;修复数据库
  3. 百度竞价账户能否多少词?
  4. python输出边长为n的正方形_将一个正方形分成N个较小的正方形并求N个较小正方形的中心坐标...
  5. string.class是什么意思?
  6. 回顾2017、展望2018
  7. 从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》
  8. 【xlsx-chart】Vue项目中导出Excel表格并带上图表
  9. linux team 模式,linux 聚合口 team libteam 简介
  10. [转载] 无法解密!首个利用WinRAR漏洞传播的未知勒索软件(JNEC)分析