QT-功能-实现主页面和子页面之间的跳转(最简单)
用简单的方法实现两个界面之间的跳转
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-功能-实现主页面和子页面之间的跳转(最简单)相关推荐
- HTML框架IFrame结合JS在主页面和子页面间传值
下面主页面和子页面互相传值的DEMO 如果仅仅需要子页面触发主页面的函数 仅需 [ parent.window.你的函数 ] 就可以了 DOM方法: 父窗口操作IFRAME:window.frames ...
- 08﹑导航子页面切换功能5_实现导航栏子页面切换
08﹑导航子页面切换功能5_实现导航栏子页面切换
- js父页面和子页面之间传值
今天和朋友一块讨论,怎样通过js在父页面和子页面之间传值的问题,总结例如以下: 需求描写叙述:父页面有多个子页面.实如今父页面点击子页面,传值到子页面. 看着非常easy,试了好久.主要纠结在怎样获取 ...
- 页面之间的跳转方式和参数传递以及路由和生命周期
微信小程序拥有web网页和Application共同的特征,我们的页面都不是孤立存在的,而是通过和其他页面进行交互,来共同完成系统的功能.今天我们来研究小程序页面之间的跳转方式. 1.概述 在Andr ...
- Android深入浅出系列之实例应用—手机页面之间的跳转
在网页里,我们可以通过超级链接从一个网页跳转到另外一个网页,在手机里面,要如何实现手机页面之间的跳转呢? 原理:通过布局文件和setContentView()方法配合来实现.通过点击第一个布局文件ma ...
- java中程序跳转_java程序中先后台交互的两种实现方式以及页面之间的跳转
虽然如今市面上很流行先后端分离,可是在不少企业中仍是使用的是SSH框架,先后端不分离. 那么此类先后端有其自身独特的先后台交互的方式,可是也支持js/jquery.下面对这两种方式作一下概括.java ...
- 页面之间的跳转与交互
前言:想写这篇的原因,学到location对象以及之前大web大作业,想实现多个页面之间的跳转只能够通过a标签来实现,但是有些地方只用a标签显然是不够的,最终还是没有解决,全都是使用a标签--现在可以 ...
- 微信小程序实现两个页面之间的跳转
两个简单的页面 点击链接实现在两个页面之间的跳转 图片和文字自行设置 步骤 1:创建项目 2:删除多余无用文件和代码 最新版的微信开发者工具不支持创建空白项目,我们需要把原来多余的文件和代码删除 需要 ...
- 利用计算机浏览信息,利用计算机浏览信息时,可以实现任意页面之间的跳转,这种技术最恰当的说法是(??)...
利用计算机浏览信息时,可以实现任意页面之间的跳转,这种技术最恰当的说法是(??) 小儿推拿经穴大多集中于A:腰背部B:胸腹部C:头面部D:上肢部E:下肢部 做作屈伸练习前直后转时,髋关节及整个身体转向 ...
- iframe 父页面与子页面之间的方法的相互调用
2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...
最新文章
- C++关键字const
- 头条创始人张一鸣没有任何大厂经验,是怎么做出这么厉害的产品的呢,以及管理这么大的团队呢?...
- 用于传递列表作为选项的argparse选项
- document的createElement方法创建具有指定标签的DOM对象
- 手机更新找不到计算机,为什么手机更新换代这么快,电脑的更新却没有这么快呢...
- Javascript——声明提升(函数、变量提升)
- Android中样式及主题
- java project 连接hibernate 出错
- dueros基于什么开发的_干货丨超详细!DuerOS开发套件申请攻略!
- php隔行符,PHP PHP_EOL 换行符
- springboot 毕业设计管理系统
- Hibernate技术
- matlab 平滑曲线连接_Matlab的5个控制类工具箱介绍
- 娱乐小工具微信小程序源码下载/支持多种流量主
- 电工技术(3)—电路的分析方法二
- 苹果各版本手机更换电池的视频
- C语言实现哈夫曼树求解及其编码输出
- 开发3D游戏建模都需要哪些软件?软件繁多,如何从中挑选学习?
- 使html轮廓颜色不同,css中border颜色不同怎么设置?
- 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
热门文章
- 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
- 【Access2003】表的新建、用sql语句查询;关闭警告信息;修改数据库密码;修复数据库
- 百度竞价账户能否多少词?
- python输出边长为n的正方形_将一个正方形分成N个较小的正方形并求N个较小正方形的中心坐标...
- string.class是什么意思?
- 回顾2017、展望2018
- 从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》
- 【xlsx-chart】Vue项目中导出Excel表格并带上图表
- linux team 模式,linux 聚合口 team libteam 简介
- [转载] 无法解密!首个利用WinRAR漏洞传播的未知勒索软件(JNEC)分析