当前位置: 首页 > news >正文

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

一、前言

        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.lryc.cn/news/117336.html

相关文章:

  • 浅谈测试开发岗位
  • 典型移动APP安全风险提醒
  • 多平台发布文章-项目总结
  • 什么是IoC?什么是Spring IoC?什么是DI?
  • 分布式任务调度平台XXL-JOB学习笔记-helloworld运行
  • 维护工程师提升设备管理水平的5个技巧
  • 解码大众全新数字高尔夫8汽车CAN FD行驶功能电气架构
  • 什么是DDL、MDL?
  • 【sonar】安装sonarQube免费社区版9.9【Linux】【docker】
  • MySQL基本语法总结
  • 锐捷VSU技术理论与实验
  • 深入探索Linux文件链接技术:ln命令的妙用
  • electron项目开发环境搭建
  • Spring 知识点
  • 目标跟踪与检测后进行 OpenCV 人脸识别 ,马赛克
  • 持有PMP证书,可申请CSPM证书!
  • linux自定义网络访问规则
  • 247 个经典实用有趣的 Python 实例附源码
  • 动手学深度学习Pytorch 4.4练习
  • 【计算机视觉 | Kaggle】飞机凝结轨迹识别 Baseline 分享和解读(含源代码)
  • ThinkPHP文件上传:简便安全的解决方案
  • torch.multiprocessing
  • 解决本地代码commit后发现远程分支被更新的烦恼!
  • 最新AI创作系统ChatGPT程序源码+详细搭建部署教程+微信公众号版+H5源码/支持GPT4.0+GPT联网提问/支持ai绘画+MJ以图生图+思维导图生成!
  • 910数据结构(2014年真题)
  • Idea创建maven管理的web项目
  • Java并发编程(一)多线程基础概念
  • D. Strong Vertices - 思维 + 二分
  • 8月9日上课内容 nginx负载均衡
  • 为何我们都应关心算法备案?