嵌入式 QT多界面切换

news/2024/5/21 1:17:41

目录

1.  添加界面类实现

   1.1 添加第二个界面的类

1.2 添加第2个界面的头文件和槽函数 

2. 工程管理实现


在Qt中,多界面切换是指在一个应用程序中使用多个不同的界面,并在它们之间进行切换。这种切换可以是用户触发的,例如点击按钮或选择菜单项,也可以是应用程序自动执行的,例如根据特定条件自动显示不同的界面。

  Qt提供了QStackedWidget类,它是一个容器部件,可以用于存放多个界面,每个界面都是一个QWidget或其子类。通过在QStackedWidget中添加多个界面,可以在需要的时候显示特定的界面,从而实现界面切换的效果。

  在界面切换过程中,可以使用各种Qt提供的信号和槽机制来处理用户输入和应用程序逻辑。通过连接按钮的点击信号或菜单项的选择信号到相应的槽函数,可以在用户触发事件时执行相应的界面切换操作。

  总之,Qt多界面切换是指在一个Qt应用程序中使用多个界面,并通过用户操作或应用程序逻辑来切换显示不同的界面。

1.  添加界面类实现

   1.1 添加第二个界面的类

1.2 添加第2个界面的头文件和槽函数 

#include "twoform.h"
void ontForm::on_gotoTwoBtn_clicked()
{//创建第 2 个界面//方式一:每点击一次都创建一个第 2 界面//twoForm *twoform = new twoForm ;// twoform->show();//方式二:多次点击也只创建一个第 2 界面--全局变量指针//twoform = new twoForm ; //放在构造函数,放在此也会创建多个twoform->show();//twoform 全局变量指针//方式三:多次点击也只创建一个第 2 界面--全局变量
//tf.show();
this->hide();//隐藏第一个窗体
}
从第二个页面返回第一个页面,由于第 2 )步中让第一个窗体只是隐藏,所以不能再次创建第一个窗体, 应该发送一个信号给第一个窗体,让它显示。
窗体2定义信号:
class twoForm : public QWidget
{Q_OBJECT
public:explicit twoForm(QWidget *parent = 0);~twoForm();
signals:
void twoFormSendSignal(QString);//定义一个信号
}

窗口2发送信号:

void twoForm::doProcessTwoFormBtnToOneForm(bool)
{clinckCount++;//发送信号,通知第一个窗体
emit twoFormSendSignal(QString::number(clinckCount));
this->hide();
}

窗体1接收信号:

//在第一个窗体的构造函数中添加绑定
twoform = new twoForm ;
connect(twoform,SIGNAL(twoFormSendSignal(QString)),this,SLOT(doProcessTwoForm
Resquest(QString)));
void ontForm::doProcessTwoFormResquest(QString str)
{
qDebug() << str <<endl;
this->show();
}

2. 工程管理实现

实现功能:

点击返回;

 

弹出界面属性设置:

实例程序:

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPalette>
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}
Widget::~Widget()
{delete ui;
}
void Widget::resizeEvent(QResizeEvent *event)
{setBackgroundImage(":/image/backgroup.jpg");
}
void Widget::setBackgroundImage(QString Image)
{//Qpixmap 是图片类,scaled 是缩放成为本窗口的大小QPixmap pixmap = QPixmap(Image).scaled(this->size());//QPalette 是调色板,palette 是指向背景的调色板QPalette palette(this->palette());//brush 是设置画刷,画刷上的颜色来自 Imagepalette.setBrush(QPalette::Background,QBrush(pixmap));//刷到背景上this->setPalette(palette);
}
void Widget::on_ledBtn_clicked()
{UiHwControl *uiHwControl = new UiHwControl();//注意,这里不能加 thisint x,y,w,h;QRect rect = this->geometry(); //获取当前坐标和尺寸信息x=rect.x();y=rect.y()+ui->staWidget->height();w=rect.width();h=rect.height()-ui->staWidget->height();uiHwControl->setGeometry(x,y,w,h);uiHwControl->show();connect(ui->backBtn,SIGNAL(clicked()),uiHwControl,SLOT(deleteLater()));
}

 uihwcontrol.cpp

#include "uihwcontrol.h"
#include "ui_uihwcontrol.h"
UiHwControl::UiHwControl(QWidget *parent) :QWidget(parent),ui(new Ui::UiHwControl)
{ui->setupUi(this);this->setWindowFlag(Qt::FramelessWindowHint); //不显示标题栏
}
UiHwControl::~UiHwControl()
{delete ui;
}


http://wed.xjx100/news/212714.html

相关文章

APACHE-ATLAS-2.1.0简介(二)

APACHE-ATLAS-2.1.0简介(一) 什么是元数据&#xff1f; 元数据(METADATA)&#xff0c;用一句话定义就是&#xff1a;描述数据的数据。元数据打通了数据源、数据仓库、数据应用之间的壁垒&#xff0c;记录了数据从产生到消费的全过程。 ATLAS的问题列表 APACHE-ATLAS-STACKO…

Ubuntu关机、重启和注销命令

学习linux系统&#xff0c;最重要的是使用各种命令对系统进行操作&#xff0c;打开各种软件&#xff0c;本次主要分析ubuntu中的关机&#xff0c;重启&#xff0c;注销命令的使用详解。 关机命令 shutdown 1)使用shutdown --help可以查看shutdown命令如何使用&#xff0c;当然也…

Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘

Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘 目录 Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘一、问题发现二、查找原因三、解决方法 服务器版本&#xff1a; cat /proc/version&#xff1a;Linux version 4.15.0-142-generic (builddlgw01-amd64-039…

用数据讲故事:十大统计学/机器学习魔法指数

统计学和机器学习为数据分析提供理论基础&#xff0c;入门时我看过很多统计学相关书籍&#xff0c;复杂的公式和推导过程让我一度陷入迷茫。对于数据科学/分析师来说&#xff0c;如何使用统计学知识并应用到我们的分析场景中更为重要。本文主要基于数据分析工作中的实际应用场景…

学习Java,可以从事哪些岗位?

不难发现&#xff0c;在互联网的影响下&#xff0c;这几年&#xff0c;中国的互联网行业进入了高速发展的阶段&#xff0c;同时IT行业&#xff0c;也成为了热门&#xff0c;备受追捧和关注的行业。在全球云计算和移动互联网的产业环境下&#xff0c;Java工程师为何会如此火爆&a…

SSM_jsp游戏-账-号-装-备虚拟物品交易系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 前端框架:jsp/Bootstrap JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat8 数据库工具&#xff1a;Navicat 开发软件&#xff1a;idea 支持eclipse 游戏账号交易系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户…

要做存储业务,我解析了一个项目的源码

最近在做存储相关的业务&#xff0c;更具体的来说是存储相关的研发&#xff0c;于是就上网查了一下相关的资料&#xff0c;思虑再三打算从最简单的 Json 数据交换格式开始研究。 JSON是独立于编程语言的数据交换格式&#xff0c;几乎所有与网络开发相关的语言都有JSON函数库&am…

小白畅玩免费支持ChatGPT3和4,一键定制自己专属AI

AI爆炸时代。你不用AI&#xff0c;别人就会用AI,当别人用AI,为自己给工作生活赋能时候。生活自在&#xff0c;工作高效&#xff0c;AI正在潜移默化改变我们生活 基于OPEN AI平台 轻松让AI 为你的生活赋能. 总之我现在生活已经离不开AI&#xff0c;帮助了。 不管是工作上问题…