嵌入式 QT多界面切换

news2025/1/16 0:14:06

目录

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 是设置画刷,画刷上的颜色来自 Image
 palette.setBrush(QPalette::Background,QBrush(pixmap));
 //刷到背景上
 this->setPalette(palette);
}
void Widget::on_ledBtn_clicked()
{
 UiHwControl *uiHwControl = new UiHwControl();//注意,这里不能加 this
 int 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://www.coloradmin.cn/o/557626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建议收藏,最全ChatGPT 中文调教指南:提供各个领域的角色提示词(prompts)及使用技巧,当然也有不正经指南

ChatGPT是一种基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的聊天机器人&#xff0c;能够回答用户提出的问题和进行对话。它是由OpenAI开发的人工智能产品&#xff0c;具有自然语言处理和深度学习技术。 ChatGPT在日常的对话中&#xff0c;表现的非…

深度剖析JVM调优法则,神器Arthas从CPU/内存出发轻松掌握调优实战技巧

场景一、CPU过高 CPU占用过高排查思路&#xff1a; step1&#xff1a;进行arthas java -jar arthas-boot.jar step2&#xff1a;输入deashboard 如何不记得命令可以在控制台输入help step3&#xff1a;查看线程栈信息 thread ID 从线程栈信息中定位到具体的java代码。 场…

Ubuntu关机、重启和注销命令

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

mssql计划

介绍 MSSQL计划是一个用于Microsoft SQL Server数据库管理的工具。它包含了一系列的功能&#xff0c;可以帮助管理员进行数据库的备份、恢复、优化、监控等操作&#xff0c;提高数据库的性能和可靠性。 MSSQL计划的主要功能包括&#xff1a; 备份和恢复数据库&#xff1a;可以…

【运维知识进阶篇】集群架构-HTTPS证书详解

HTTPS证书在企业中非常重要&#xff0c;因为HTTP不安全&#xff0c;采用HTTP协议容易受到劫持和篡改&#xff0c;如果是采用HTTPS&#xff0c;数据在传输过程中加密&#xff0c;可以避免报文信息被窃取篡改&#xff0c;避免网站传输时信息泄露。实现https&#xff0c;要了解SSL…

记录--九个超级好用的 Javascript 技巧

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 在实际的开发工作过程中&#xff0c;积累了一些常见又超级好用的 Javascript 技巧和代码片段&#xff0c;包括整理的其他大神的 JS 使用技巧&#xff0c;今天筛选了 9 个&#xff0c;以供大家参考…

从选型工具到内核优化,从替代方法到迁移改造,河北移动联合云和恩墨以创新树标杆,推进国产数据库应用落地...

势在必行&#xff0c;电信行业国产化改造适逢其时 自十四五规划以来&#xff0c;伴随着“科技创新”和“信息安全”等相关政策的密集出台&#xff0c;我国信创产业正式进入高速发展期&#xff0c;力求通过构建各行业全栈国产IT体系&#xff0c;实现科技技术自主可控&#xff0c…

原来我真的不懂Spring

(1)Spring的生命周期:简单概括为4个阶段: 1.1 创建对象 1.2 DI属性赋值 1.3 初始化 1.4 销毁 (2) Bean的作用域 : 1. Singleton: 单例 2. Prototype: 多例 3. Request: 每次http请求都会创建一个新的bean 4. Session: ~ 5. ApplicationContext: ~ (3) 注册Bean的4种方式…

企业即时通讯如何让企业沟通变得简单

企业即时通讯&#xff0c;企业之间的沟通协作&#xff0c;最核心的价值在于能够将复杂的工作任务简化为更高效、更易于沟通的协作方式。如果员工之间没有协作&#xff0c;就没有办法进行高效的沟通&#xff0c;就会出现组织低效、沟通效率低等问题。那么如何将复杂的工作任务简…

多路复用是怎么回事?

《计算机组成原理》讲述的是如何去理解程序和计算。《操作系统》讲述的是如何去理解和架构应用程序。《计算机网络》讲述的是如何去理解今天的互联网。 现在来看&#xff0c;“计算机网络”也许是一个过时的词汇&#xff0c;它讲的是怎么用计算实现通信。今天我们已经发展到了一…

HTTPS(面试高频必须掌握)

目录 一、HTTPS背景 二、HTTPS 的工作过程 1. 对称加密 2.非对称加密 3. HTTPS 基本工作过程 3.1 使用对称密钥 3.2 引入非对称密钥&#xff08;面试高频问题&#xff09; 3.3 黑客的手段 3.4 引入证书 3.5 捋一捋 3.6 SSL/TLS 三、HTTP 与 HTTPS 区别&#xff08;…

强化学习的应用领域和案例

你好&#xff0c;我是zhenguo(郭震) 今天总结强化学习第四篇&#xff1a;强化学习的应用领域 第一&#xff1a;游戏领域。 强化学习在游戏领域有很多应用&#xff0c;如围棋、象棋、扑克等游戏的AI对战。 例如&#xff0c;AlphaGo使用强化学习技术&#xff0c;在围棋比赛中击败…

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

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

chatgpt赋能Python-python_figsize

Python figsize&#xff1a;图形大小的更改 在Python数据可视化中&#xff0c;通过更改图形的大小可以使得图形更易于阅读和理解。绘图函数的“figsize”参数可以让您控制图形的大小。本文将探讨figsize的含义、使用示例以及如何根据您的需要精确调整图形大小。 什么是figsiz…

【CSAPP】虚拟内存(VM)

&#x1f4ad; 写在前面&#xff1a;本文将学习《深入理解计算机系统》虚拟内存部分&#xff0c;CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写&#xff0c;该教材由Randal E. Bryant和David R. OHallaron 合著。 &#x1f4dc; 本章目录…

【Python】判断语句 ④ ( 判断语句嵌套 )

文章目录 一、判断语句嵌套1、语法说明2、代码示例 一、判断语句嵌套 1、语法说明 在 Python 的开发场景中 , 除了 单个条件判定 : if 条件判定 , if else 条件判定 ;多个并列条件判定 : if elif else 条件判定 ; 之外 , 还有 满足 前置条件判定 后 进行 第二次条件判定 的开…

C#,码海拾贝(21)——线性方程组求解的全选主元高斯消去法之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static class LEquations { /// <summary> /…

chatgpt赋能Python-python_geany

了解Python Geany: 一种强大且高效的Python IDE 介绍 Python Geany是一种非常流行的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;是由Geany团队开发的。它是一种跨平台的开发工具&#xff0c;可在Windows、Linux和macOS等不同平台上运行。Python Geany提供了支…

Linux常用命令——host命令

在线Linux命令查询工具 host 常用的分析域名查询工具 补充说明 host命令是常用的分析域名查询工具&#xff0c;可以用来测试域名系统工作是否正常。 语法 host(选项)(参数)选项 -a&#xff1a;显示详细的DNS信息&#xff1b; -c<类型>&#xff1a;指定查询类型&am…

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

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