QT-widget时多界面切换的StackedWidget方法

QT学习09:stackedWidget----多页面切换 stackedWidget----多页面切换 阅读详情
AI摘要

本文介绍使用QT Widget进行界面切换的两种方法:一是使用.hide()和.show()方法;二是使用StackedWidget实现平滑切换,避免窗口跳动带来的不良用户体验。

使用QT-widget时多界面切换的StackedWidget方法


刚转QT没多久,项目使用widget,需要进行同窗体界面切换,于是找到一些方法,整理一下:

初写此文章时刚学嵌入式QT,使用的还是走CPU的widget,对于4.7后出现的qml还未涉及。相信肯定有更好更直观的办法,所以如果还有其他更好的方法请一定要不吝赐教!大家一起学习:)

方法一:用 .hide() 和 .show()

这个方法比较直观,因为QWidget是所有可视控件的基类,所以由QWidget继承而来的类,都会有 ..hide() 和 .show() 一个显示,一个隐藏。
可以简单的实现界面切换。
但这个方法使用起来却有一点小瑕疵: 因为这是窗口的切换,所以在切换的时候会一跳一跳(弹出窗口的动画),非常影响观感,故在此记录第二种方法。


方法二: 使用StackedWidget(ui设计师)

这种方法可以同一个界面里,根据选择变换其他窗口:
原图链接https://www.cnblogs.com/fuqia/p/8882527.html
上图出处
一般都是用代码编写ui中new一个QStackedWidget,但是我设计ui时使用ui设计师来设计居多,故使用了工具带的那个StackedWidget。
它长这样:
在这里插入图片描述
本质上和pushButton等控件一样,哪个类新建它,它就在哪个类的内存里。

既然它可以根据用户点击\信号,显示对应的小界面,那如果我把这个控件放大到塞满整个屏幕,然后用来切换显示我想要的界面呢?


就可以丝滑的显示窗口切换了~ 因为它还是同一个窗口,所以在切换的时候不会有“窗口突然跳出来”的动画,在观感上就很舒服。

PS:灰色背景色是我自己加的,四个pushButton放在了widget页面的四个角,用来提示当前界面的边界在哪

在这里插入图片描述
使用也很简单,可以直接在ui设计师里面右键添加新页面,然后拖动添加新控件。

也可以像下面这样,新建几个页面类,然后用代码把页面添加进stackedWidget
添加、切换页面的代码:

添加页面--------------------------------------------------------
aaa test1;
bbb test2;
ui->stackedWidget->addWidget(&test1);
ui->stackedWidget->addWidget(&test2);


选择显示哪个页面-------------------------------------------------
ui->stackedWidget->setCurrentIndex(1);
ui->stackedWidget->setCurrentIndex(2);

PS: 默认当前的界面【this】是CurrentIndex(0) 第一个界面,
故根据顺序,手动添加的第二个界面就是CurrentIndex(1)。以此类推

在这里插入图片描述
然后就可以愉快的用stackedWidget控件直接切换页面啦~

另外需要注意的是,这个StackedWidget组件并不会帮你自动适配要显示界面的大小,也就是说如果你像我一样用StackedWidget显示不同功能界面,那在实际使用中对应界面注意下窗口适配(由于都从QWidget继承而来,所以有.resize等常用成员函数):
在这里插入图片描述

这张图里就很清楚了,界面2很小,切换过来明显铺不满整个stackedWidget,实际使用中如果窗口变动要注意适配窗口大小


如果还有其他更好的方法请一定要不吝赐教!!

提一嘴,QT 中,信号与槽是否是同一条线程要看connect函数的第五个参数。
直接连接是信号发出同时 立刻执行 槽函数,跟回调类似,是在同一条线程。执行完槽函数才会继续往下执行。
队列连接发出信号后,信号会放到接收方的事件队列 等待执行 ,并不是同一条线程,等接收方空闲事件循环才会调用槽函数。
自动连接 这是默认参数,让Qt自行选择。如果信号发送方和接收方在同一线程中,就使用直接连接;否则使用队列连接。
简单理解:把直连当成同步,信号发出立刻调用槽;队列当成异步,等接收方空闲下来才会处理。(如果实在需要立刻响应,就调用QCoreApplication::processEvents())


QT之多个界面相互切换 (stackedWidget控件) 阅读详情

相关推荐

QT QStackedWidget 控件 使用详解

本文详细的介绍了QStackedWidget控件的各种操作,例如:新建界面、页面切换、添加页面、addWidget、count、currentIndex 、currentWidget、indexOf、insertWidget、removeWidget、widget、setCurrentIndex 槽函数、setCurrentWidget 槽函数、currentChanged 信号、widgetRemoved 信号、 样式表等操作。 本系列QT全面详解文章目前共有十八篇,本系列文章较为详细的讲述了QT控件的基

断点 5万+

[QT_039]Qt学习之堆栈控件和标签页控件(StackedWidget、TabWidget)

Qt学习之堆栈控件和标签页控件(StackedWidget、TabWidget)

kongcheng253的博客 1万+

qt 实现导航栏切换页面功能 stackedWidget

QStackedWidget是一个堆栈窗口控件,使用QStackedLayout布局,可以填充一些小控件,但同一时间只有一个小控件可以显示。QStackedWidget控件与QTabWidget类似,可以有效地显示窗口中的控件。QStackedWidget类实现组件层叠,但它是一个组件,而不是一个容器。 addWidget(QWidget widget) - 将一个组件添加到容器的末尾,返回添加组件的索引; insertWidget(int index,QWidget widget) - 将组件添.

zcc的博客 1万+

QStackedWidget——一个界面中多页面切换

二、方法二:使用StackedWidget(Ui设计)一、方法一:用.hide()和.show().hide():隐藏。.show():显示。

twtongwei的博客 4266

QT中的StackedWidget控件,通过绑定键盘事件实现窗口的滑动切换

StackedWidget是一个,它允许我们在里面堆叠多个页面或者面板,并且每个页面内部都可以有自己的布局和内容。

weixin_42473339的博客 3179

QT Creator中Stacked Widget实现多界面的跳转

Qt在不使用双ui界面的情况下实现界面的跳转 作为QT Creator的初学者,在设置ui界面时总是会遇到一些有设计想法但不知道具体流程的情况,初学者最基础的就是只做一个界面,所有的按键都排布在一个ui界面下,若界面实现的功能多,那按键就一定会混杂,或者实现的功能需要一个整页的文本框,这样就限制了程序的编写与设计,这样,在网上可以查询到如何设置两个ui界面,但我今天所写的是利用第二种方法实现:St...

Printf_y的博客 3011

PyQt5使用stackedWidget实现页面切换

完整代码如下import sys以上便是本人的制作过程,如遇问题或者文章有错误可私信或者评论。

暮川ovo的博客 5495

QT中stackedWidget控件实现多界面动态切换的实战技巧

本文深入探讨了在QT开发中使用stackedWidget控件实现多界面动态切换的实战技巧。通过创建示例应用,详细讲解了如何添加页面、通过索引或指针进行切换,并分享了与导航栏联动、实现向导流程及懒加载优化等进阶架构。文章还提供了避免布局跳动、管理信号槽生命周期等常见问题的避坑指南,帮助开发者构建流畅、模块化的桌面应用界面。

weixin_29271053的博客 350

PyQt5利用Qt designer(QT设计师)使用tab widget和stacked widget实现多页面切换

本文介绍了如何通过PyQt5的 Qt designer(QT设计师),使用tab widget和stacked widget控件实现多页面切换功能

hubing_hust的专栏 3万+

结合设计师使用stackedWidget,整理不同界面文件,可界面切换显示

如何使用stackedWidget高效的进行界面切换,这在我刚使用QT的时候造成了很大的困扰。 如果要将别人的写好的很多个设计师界面类,整合到一个项目里面,并且可以显示这些界面,用这个方法是很方便的。现将方法整理如下。 1 首先建立一个新项目,基类选择widget,添加UI界面。 2在ui界面里面拖入 大小视情况自己设定。 3 将要添加到此项目里面的设计师界面类的文件(包括头文件、源文件、ui ...

qq_42973043的博客 6038

QT界面切换实战:用stackedWidget打造多页面应用(附完整代码)

本文深入探讨了使用QT框架中的stackedWidget组件实现多页面应用界面切换的实战方法。通过分析其核心机制、对比替代方案,并结合完整代码示例,详细讲解了如何构建模块化、可维护的企业级应用架构,涵盖页面管理、导航控制、状态保持及性能优化等高级技巧。

v5w6x的博客 673

[Qt5&控件] 控件stackedWidget、lineEdit等的用法

         看了一些关于QT界面部件的介绍,特此记录一下 1.容器部件—widget:一般对界面进行分块布局时使用。 2.多界面切换部件—stackedWidget:通常需要加一个按钮,对其进行页面切换 代码: void MyMenuBar::slot1() { static int i = 0; //静态的整形变量,使用完,数...

Loewen丶的小窝 1586

QT多页面切换——基于Stacked Widget(堆叠窗口)组件

参考链接https://blog.youkuaiyun.com/gan19951101/article/details/79978033 一 步骤 1.创建分页面窗口wigget类,FormMilk类 和FormCoffee类,如下创建 2主窗口.h 包含对应的.h文件,创建窗口页面指针 #include "formmilk.h" #include "formcoffee.h" ...... FormMilk *form1Page;//窗口页面指针 FormCoffee *form2Page; 3.主

仲羊的博客 3314

stackedwidget插入widget

PolyCurveWindow *pcw = new PolyCurveWindow(this); ui->stackedWidget_first->addWidget(pcw); //这行不加不能编辑 ui->stackedWidget_first->setCurrentWidget(pcw); 在将widget插入stackedwidget时需要用setcurrentwidget来显示 否则用show的话会不能编辑 ...

heiYhei的博客 1352

深入解析QT中的StackedWidget控件

StackedWidget是Qt框架中用于组织和管理多个子窗口小部件的一个重要控件,它能够将多个页面叠加在一起,用户通过页面切换功能可以逐个浏览。这种方式在需要提供多个视图但不想创建独立窗口的场景中非常有用。为了自定义页面切换动画,开发者可以使用的方法设置动画持续时间,以及通过方法来设置动画的速度曲线,从而实现不同的动画效果。// 设置动画持续时间为300毫秒// 设置动画速度曲线为OutCubic代码逻辑解读:设置了页面切换动画的持续时间为300毫秒。

weixin_28872035的博客 1531

APK静态分析(取证角度)——理论部分

APP是指应用程序(Application),是指能够在手机、平板电脑、电脑等移动设备上运行的软件。APP可以帮助用户进行各种功能操作,如社交媒体、游戏、购物、学习、工作等。用户可以通过应用商店或者在线下载安装APP,然后在设备上使用它们。APP的种类非常丰富,能够满足用户不同的需求和兴趣。

currify的博客 3208

利用qt中的控件stackedWidget来实现界面的切换

一、首先界面布局大概是这样的,如图: 二、 界面三,则需要重新生成一个Qt 设计师界面类 的带界面的文件,这个界面就是命名为form,在ui中进行布局如图所示: //定义一个指针 Form *Form_ui; 三、在mainwindow.h文件中,我们先需要对form类进行实例化,所以在mainwindow中定义指针,并进行初始化,在按钮的点击事件中进行调用stacke...

Littlehero_121的博客 7248

STM32cube HAL库两条命令实现i2c通信---Nucleo L476RG用I2C实现tmp117模块温度读取并串口打印

Getting Started with STM32 - I2C Example

m0_54706625的博客 1832

Qt 切换StackedWidget的方法

Qt 切换StackedWidget的方法

love_dear的博客 576

深信服上网行为管理设备登录方法、恢复出厂、恢复控制台密码

1.初识设备 1.1 设备外观 1.2 软件版本 2.如何登录设备 首次拿到AC/SG设备时,可以通过以下方法登录设备控制台 SANGFOR AC/SG设备,各网口默认的出厂IP为: eth0(LAN):10.251.251.251/24 , eth1(DMZ)10.252.252.252/24 1、使用一根交叉线连接设备和电脑 (1) 如果电脑连接的是设备的eth0口,需先在电脑上配...

✍千里之行,始于足下 ^,^ 5万+

【软考中级网络工程师】知识点之 IP QoS 技术

本文围绕软考中级网络工程师必备的 IP QoS 技术展开,系统阐述其核心知识。首先解析 IP QoS 的定义、重要性及应用场景,揭示其在视频会议、在线游戏等场景的关键作用;接着深入讲解技术原理,包括流量分类与标记、整形与限速、拥塞管理及 RSVP 协议;随后对比尽力而为、IntServ、DiffServ 三种服务模型的特点;还介绍了配置实践与案例分析,探讨其与 SDN、5G 等技术的融合趋势。旨在帮助读者全面掌握 IP QoS 技术要点,为网络规划与优化提供理论与实践指导。

邓邓子的博客 1086
上一篇: QT QByteArray的十进制与十六进制(字符型) 互相转换 -串口编程
下一篇: QT定时任务- timerEvent事件使用以及和QTimer 定时器的使用区别
温柔大猩猩
博客等级 码龄7年 65粉丝 14原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值