Qt应用开发(基础篇)——堆栈窗口 QStackedWidget

news2025/1/4 19:56:17

一、前言

        QStackedWidget继承于QFrame,QFrame继承于QWidget,是Qt常用的堆栈窗口部件。

        框架类QFrame介绍

         QStackedWidget堆栈窗口,根据下标切换,一次显示一个小部件,常用于应用界面切换图片轮询播放等场景。

 二、QStackedWidget类

1、count

        该属性表示当前堆栈子部件的数量。

int count() const    //获取选项卡数

2、currentIndex

        该属性表示当前显示的子部件的下标,如果子部件数量为0,则返回-1。

int currentIndex() const            //获取当前选项卡下标
void setCurrentIndex(int index)     //设置当前选项卡下标

3、公共方法

1)增加子部件

        使用addWidget增加子部件,默认插入到尾部。

int addWidget(QWidget *widget)

2)插入子部件

        使用insertWidget在索引的位置插入子部件,如果索引index超出范围,那么插入到尾部,返回值为实际插入的位置。

int insertWidget(int index, QWidget *widget)

3)移除子部件

        使用removeWidget移除子部件,注意这里是从布局中移除,导致小部件被隐藏起来。

void removeWidget(QWidget *widget)

4)查找子部件

        使用indexOf找到某子部件索引,如果不存在则返回-1。

int indexOf(QWidget *widget) const

5)设置/读取子部件

        如果子部件不存在则返回空指针。

QWidget *widget(int index) const
QWidget *currentWidget() const
void setCurrentWidget(QWidget *widget)

4、信号

        当前索引发生变化触发currentChanged信号。

void currentChanged(int index)

        子部件被移除触发widgetRemoved信号。

void widgetRemoved(int index)

 5、实例

        根据下拉框的选项修改stackWidget的显示子部件。

QFont serifFont("Times", 20, QFont::Bold);
QWidget *firstPageWidget = new QWidget;
QLabel *firstble = new QLabel("Page1",firstPageWidget);
firstble->setFont(serifFont);
QWidget *secondPageWidget = new QWidget;
QLabel *secondble = new QLabel("Page2",secondPageWidget);
secondble->setFont(serifFont);
QWidget *thirdPageWidget = new QWidget;
QLabel *thirdble = new QLabel("Page3",thirdPageWidget);
thirdble->setFont(serifFont);

QStackedWidget *stackedWidget = new QStackedWidget(this);
stackedWidget->addWidget(firstPageWidget);
stackedWidget->addWidget(secondPageWidget);
stackedWidget->addWidget(thirdPageWidget);
stackedWidget->setFrameStyle(QFrame::Panel | QFrame::Raised);
stackedWidget->move(300,200);
stackedWidget->setFixedWidth(200);
stackedWidget->setFixedHeight(200);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
setLayout(layout);

QComboBox *pageComboBox = new QComboBox(this);
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, QOverload<int>::of(&QComboBox::activated),
        stackedWidget, &QStackedWidget::setCurrentIndex);
pageComboBox->move(100,200);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861192.html

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

相关文章

Linu网络服务NFS

linux网络服务NFS 一.NFS简介二.NFS原理三.NFS优势四.配置文件五.NFS共享存储服务的操作步骤 一.NFS简介 NFS&#xff08;网络文件服务&#xff09; NFS是一种基于tcp/ip传输的网络文件系统协议&#xff0c;最初由sun公司开放通过使用NFS协议&#xff0c;客户机可以像访问本地…

Java课题笔记~ ServletContext

单个Servlet的配置对象 web.xml <servlet><servlet-name>FirstServlet</servlet-name><servlet-class>com.ambow.test.FirstServlet</servlet-class><init-param><param-name>charset</param-name><param-value>utf-8&…

SpringMVC注解配置

1xml配置方式&#xff08;配置文件注解的方式&#xff09; 前提导入相关依赖&#xff1a;pom文件 说明&#xff1a;下方依赖是ssm项目中较为常用的一部分&#xff0c;可能部分依赖对于springmvc配置并未有关系&#xff0c;根据自己需求添加和删除。 <dependencies> &l…

新手如何快速学习单片机?

初步确定学习目标&#xff1a;是学习简单便宜的51呢&#xff0c;还是学习简单但是性价比已经不算太高的&#xff0c;但是功能强大稳定可靠的avr&#xff0c;还是物美价廉的stm32&#xff0c;或者ARM9&#xff08;可以跑系统了&#xff09;&#xff0c;再往上x86什么的如果是学8…

成员变量和局部变量的区别

局部变量成员变量 1、定义的位置不一样 在方法的内部&#xff0c;方法申明上&#xff08;形参&#xff09;。 声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量 在方法的外部&#xff0c;直接写在类当中 &#xff08;类中方法外的变量&#xff09; 2、作用范…

opencv 实现手势跟踪并返回位置信息(封装调用)

OpenCV 是一个基于 Apache2.0 许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.t…

什么是IMAP协议?

IMAP&#xff08;Internet Message Access Protocol&#xff09;是一个应用层协议&#xff0c;用于访问和管理存储在远程服务器上的电子邮件。相比于POP3&#xff0c;IMAP提供了更加丰富的功能&#xff0c;特别适用于需要在多台设备上访问电子邮件的用户。以下是关于IMAP的详细…

支持多用户协同的思维导图TeamMapper

什么是 TeamMapper &#xff1f; TeamMapper 是基于 Mindmapp 开发的用于绘制思维导图的 Web 应用程序。它使得思维导图变得简单&#xff0c;你可以托管并创建您自己的思维导图。与您的团队分享您的思维导图会议并在思维导图上进行协作。 软件特点&#xff1a; 创建&#xff1…

解决:Unexpected ‘debugger‘ statement.eslint(no-debugger) (即:页面中的 debugger 标红)的问题

1、问题描述&#xff1a; 其一、报错为&#xff1a; Unexpected debugger statement.eslint(no-debugger) 中文为&#xff1a; 意外的“调试器”语句.eslint&#xff08;无调试器&#xff09; 其二、问题描述为&#xff1a; 在正常的 vue 项目中使用 debugger 的调试过程…

人工智能原理(2)

目录 一、知识与知识表示 1、知识 2、知识表示 3、知识表示方法 二、谓词逻辑表示法 1、命题逻辑 2、谓词逻辑 三、产生式表达法 1、知识的表示方法 2、产生式系统组成 3、推理方式 4、产生式表示法特点 四、语义网络 1、概念及结构 2、语义网络的基本语义联系 …

bye 我的博客网站

Bye&#x1f64b;&#x1f64b;&#x1f64b;&#xff0c;我的博客网站。在我的服务器上运行了9个月之久的博客网站要和大家Bye了。 背景 可能很多人不知道我的这个博客网站的存在&#xff0c;好吧&#xff0c;最后一次展示它了&#xff0c;博客网站地址在这里&#xff0c;它…

空降流量危机?QQ音乐升级架构应对高并发

# 关注并星标腾讯云开发者 # 每周3 | 谈谈我在腾讯的架构设计经验 # 第2期 | 赵威&#xff1a;QQ音乐评论系统如何实现高可用&#xff1f; QQ 音乐自诞生以来&#xff0c;已有多个版本的评论业务系统。最新版本是19年再次全新迭代&#xff0c;基于 tlist 存储&#xff0c;按照发…

章节4:JavaScript操作Cookie

章节4&#xff1a;JavaScript操作Cookie 直接利用Cookie登录 JavaScript语法 获取&#xff1a;document.cookie; 设置&#xff1a;document.cookie“usernamexx”; 删除&#xff1a;document.cookie“usernamexx;expiresThu, 01 Jan 1970 00:00:00 GMT”;

Goland报错 : Try to open it externally to fix format problem

这句报错的意思也就是 : 尝试在外部打开以解决格式问题 解决方案 : 将图片格式该为.png格式&#xff0c;再粘贴进去就可以了! 改变之后的效果 : 那么&#xff0c;这样就ok了

Unity ML-Agent

介绍: 环境搭建 待为完序

javascript数据类型与引用类型的区别以及原始值详解

基本数据类型介绍 在JavaScript中,数据类型可以分为基本数据类型与引用数据类型.其中基本数据类型包括 Undefined,Null,Boolean,Number,String5种数据类型,在ES6中新增了两种基本的数据类型,Symbol,bigint 引用类型有Object,Function,Array,Date,RegExp等 这两种类型区别简略…

JavaScript高级:原型和原型链

在 JavaScript 中&#xff0c;原型与原型链是一种强大的继承机制&#xff0c;它使对象之间能够共享属性和方法&#xff0c;从而实现高效的代码复用。虽然这听起来可能有些复杂&#xff0c;但是我们可以用通俗易懂的方式来理解这个概念。本文将为你详解原型和原型链的概念与作用…

win11虚拟机安装

win11虚拟机安装 下载虚拟机客户端安装客户端创建虚拟机下载 ISO切换root账号GNOME桌面 下载虚拟机客户端 版本是16.2.3 链接&#xff1a;https://pan.baidu.com/s/13c6XVWFbeQKbCnrlfxD8cA 提取码&#xff1a;qxdc 安装客户端 安装向导 点击下一步 接收条款&#xff0c;点…

C#小轮子:自动连续Ping网络地址

文章目录 前言Ping代码异步问题 前言 工作中&#xff0c;我们经常用到Ping这个指令&#xff0c;有时候我们需要Ping整个网段来查看这个网段上面有什么设备&#xff0c;哪些Ip地址是通的&#xff0c;这个时候就需要Ping指令 Ping 代码 我这个是批量Ping的代码&#xff0c;而…

Stable Diffusion WebUI安装和使用教程(Windows)

目录 下载Stable Diffusion WebUI运行安装程序&#xff0c;双击webui.bat界面启动插件安装&#xff08;github&#xff09;模型下载(有些需要魔法&#xff09;安装过程遇到的大坑总结参考的博客 整个过程坑巨多&#xff0c;我花了一个晚上的时间才全部搞定,本教程针对有编程基础…