Qt QListwidget与QStackedWidget或QTableWidget实现多界面切换的效果

文章目录

      • 效果图
      • 使用QStackedWidget实现
      • 使用QTableWidget实现
      • 总结

效果图

在这里插入图片描述

使用QStackedWidget实现

  • QStackedWidget提供了一种堆栈式的界面布局方式
  • 功能:QStackedWidget允许开发者在一个固定区域内显示多个子窗口或页面,但同时只显示其中一个子窗口,其他子窗口则被隐藏。这种特性使QStackedWidget非常适合用于创建多页的界面,如向导、选项卡或其他多视图应用程序。
  1. 页面管理:你可以通过addWidget()方法向QStackedWidget添加新的页面,通过insertWidget()插入到特定的位置,或者通过removeWidget()移除页面。
  2. 当前页面:使用setCurrentIndex()方法可以根据页面的索引来切换当前显示的页面。也可以使用setCurrentWidget()通过页面控件本身来切换。
  3. 页面切换信号:当当前页面发生变化时,QStackedWidget会发出currentChanged信号,你可以连接到这个信号来执行一些自定义操作,比如更新界面或者保存数据。
  4. 布局:每个页面可以有自己的布局和控件,你可以像管理普通的QWidget一样管理每个页面。
  • 这里提供一个简单的demo
class MyWidget : public QWidget
{Q_OBJECT
public:MyWidget(QWidget *parent = nullptr) : QWidget(parent){// 水平布局QHBoxLayout *layout = new QHBoxLayout(this);// 列表部件QListWidget *listWidget = new QListWidget(this);// 堆叠部件QStackedWidget *stackedWidget = new QStackedWidget(this);// 添加页面到列表和堆叠部件for (int i = 0; i < 5; ++i) {QString label = QString("第 %1页").arg(i + 1);// 添加项到列表部件listWidget->addItem(label);// 创建对应页面QWidget *pageWidget = new QWidget();QVBoxLayout *pageLayout = new QVBoxLayout(pageWidget);QLabel *pageLabel = new QLabel(label, pageWidget);pageLayout->addWidget(pageLabel);pageWidget->setLayout(pageLayout);// 添加页面到堆叠部件stackedWidget->addWidget(pageWidget);}// 创建按钮部件QPushButton *previousButton = new QPushButton("上一页", this);QPushButton *nextButton = new QPushButton("下一页", this);// 连接按钮信号到对应槽connect(previousButton, &QPushButton::clicked, [=](){int currentIndex = stackedWidget->currentIndex();if (currentIndex > 0) {stackedWidget->setCurrentIndex(currentIndex - 1);listWidget->setCurrentRow(currentIndex - 1);}});connect(nextButton, &QPushButton::clicked, [=](){int currentIndex = stackedWidget->currentIndex();if (currentIndex < stackedWidget->count() - 1) {stackedWidget->setCurrentIndex(currentIndex + 1);listWidget->setCurrentRow(currentIndex + 1);}});// 将列表部件和堆叠部件添加到水平布局中layout->addWidget(listWidget);layout->addWidget(stackedWidget);// 在水平布局下添加按钮QVBoxLayout *buttonLayout = new QVBoxLayout();buttonLayout->addWidget(previousButton);buttonLayout->addWidget(nextButton);layout->addLayout(buttonLayout);// 连接选项改变信号到堆叠部件的 setCurrentIndex 槽connect(listWidget, &QListWidget::currentRowChanged, stackedWidget, &QStackedWidget::setCurrentIndex);// 设置水平布局this->setLayout(layout);}
};

使用QTableWidget实现

  • QTableWidget提供了类似于QListView的功能,但是它是为表格数据设计的,具有行和列。QTableWidget管理一个二维数组的数据,每个单元格都可以包含文本、图标或其他控件。
  • 它的函数addTab也可以达到切换页面的效果,与 QStackedWidget使用方式基本一致.
  • 这里就不做示例了

总结

  • 知识理应共享
  • 示例很简单,具体的页面想要什么功能需要自己补充,源码在此。

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

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

相关文章

windows下安装python3.8

一、从官网下载安装包 官网地址&#xff1a;https://www.python.org/downloads/ 华为云地址&#xff1a;https://mirrors.huaweicloud.com/python/ 第三方镜像&#xff1a;https://registry.npmmirror.com/binary.html?pathpython/ 注意&#xff1a;从python3.8.10版本开始…

PostgreSQL索引篇 | Hash索引

Hash索引 PostgreSQL版本为8.4.1 &#xff08;本文为《PostgreSQL数据库内核分析》一书的总结笔记&#xff0c;需要电子版的可私信我&#xff09; 在实际的数据库系统中&#xff0c;除了B-Tree外&#xff0c;还有多种数据结构可做索引&#xff0c;Hash表就是其中的一种。通过…

HTML_CSS_盒子模型

盒子模型组成 内容区域&#xff08;comtent&#xff09;内边距区域&#xff08;padding&#xff09;边框区域&#xff08;border&#xff09;外边距区域&#xff08;margin&#xff09; 布局标签 标签&#xff1a;<div> </div> 和 <span> …

Leetcode笔记——二叉树的迭代遍历

中序遍历&#xff1a; 定义一个 保存中间量的栈 和一个 结果数组 1. 模板写法 注释版&#xff1a; 背诵版&#xff1a; 前序遍历 1. 中 右 左 的顺序遍历 2. 模板写法&#xff0c;按中 左 右 的顺序遍历 后序遍历 1. 模板写法&#xff0c;按左 右 中 的顺序遍历 注释版&am…

FreeRTOS操作系统学习——同步互斥与通信

同步&#xff08;Synchronization&#xff09; 同步是一种机制&#xff0c;用于确保多个任务能够按照特定的顺序协调执行或共享数据。当一个任务需要等待其他任务完成某个操作或满足某个条件时&#xff0c;同步机制可以帮助任务进行协调和等待。 在FreeRTOS中&#xff0c;常见…

Spring官网中查看MongoDB的API文档的详细步骤

目录 Spring官网中查看MongoDB的API文档的详细步骤1、进入 Spring 官网2、选择 Mongodb的文档介绍3、点击API文档4、进入文档查询页面 Spring官网中查看MongoDB的API文档的详细步骤 1、进入 Spring 官网 首先进入Spring的官网&#xff0c;然后点击【Spring Data】 2、选择 Mon…

Java二叉树 (2)

&#x1f435;本篇文章将对二叉树的一些基础操作进行梳理和讲解 一、操作简述 int size(Node root); // 获取树中节点的个数int getLeafNodeCount(Node root); // 获取叶子节点的个数int getKLevelNodeCount(Node root,int k); // 获取第K层节点的个数int getHeight(Node r…

P1958 上学路线

难度&#xff1a;普及- 题目描述 你所在城市的街道好像一个棋盘&#xff0c;有 a 条南北方向的街道和 b 条东西方向的街道。南北方向的 a 条街道从西到东依次编号为 1 到 a&#xff0c;而东西方向的 b 条街道从南到北依次编号为 1 到 b&#xff0c;南北方向的街道 i 和东西方…

单数码管(arduino)

1.连接方法 挨个点亮每个灯 #include <Arduino.h>int pin_list[] {4, 5, 19, 21, 22, 2, 15, 18}; int num_pins sizeof(pin_list) / sizeof(pin_list[0]); // 计算数组中的元素数量void setup() {// 设置每个引脚为输出for(int i 0; i < num_pins; i) {pinMode(p…

C语言:ctype和string库中的部分常用函数的应用和实现

在编程过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;C语言标准库中就提供了一系列的库函数&#xff0c;便于我们操作库函数。 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xff0c;也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含…

Springboot 集成kafka 消费者实现ssl方式连接监听消息实现消费

证书准备&#xff1a;springboot集成kafka 消费者实现 如何配置是ssl方式连接的时候需要进行证书的转换。原始的证书是pem, 或者csr方式 和key方式的时候需要转换&#xff0c;因为kafka里面是jks 需要通过openssl进行转换。 证书处理&#xff1a; KeyStore 用于存储客户端的证…

分类预测 | Matlab基于TTAO-CNN-LSTM-Attention三角拓扑聚合优化算法优化卷积神经网络-长短期记忆网络-注意力机制的数据分类预测

分类预测 | Matlab基于TTAO-CNN-LSTM-Attention三角拓扑聚合优化算法优化卷积神经网络-长短期记忆网络-注意力机制的数据分类预测 目录 分类预测 | Matlab基于TTAO-CNN-LSTM-Attention三角拓扑聚合优化算法优化卷积神经网络-长短期记忆网络-注意力机制的数据分类预测分类效果基…

【Python】进阶学习:OpenCV--一文详解cv2.namedWindow()

【Python】进阶学习&#xff1a;OpenCV–一文详解cv2.namedWindow() &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

C++椭圆检测论文复现 Ubuntu 22.04+Vscode+opencv3.4

复现的代码 本博客旨在复现论文《An Efficient High-quality Ellipse Detection》&#xff0c;该文章本来只有Matlab的代码实现&#xff0c;后来被islands翻译成了c 库&#xff0c;大家可以参考islands发在知乎上的文章高质量椭圆检测库&#xff0c;C的代码链接。 使用环境 U…

ROS2动作通信的实现

文章目录 1.动作通信的概念及应用场景1.1 概念1.2 应用场景 2.准备工作3.动作通信的实现3.1 动作通信接口消息3.2 服务端实现3.3 客户端实现3.4 编译及运行 1.动作通信的概念及应用场景 1.1 概念 动作通信适用于长时间运行的任务。就结构而言动作通信由目标、反馈和结果三部分…

吴恩达机器学习-可选实验室:可选实验:使用逻辑回归进行分类(Classification using Logistic Regression)

在本实验中&#xff0c;您将对比回归和分类。 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from lab_utils_common import dlc, plot_data from plt_one_addpt_onclick import plt_one_addpt_onclick plt.style.use(./deeplearning.mplstyle)jupy…

第三百九十二回

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容&#xff0c;本章回中将介绍如何通过相机获取图片文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. …

JavaWeb--Maven

一&#xff1a;概述 1.简介 Maven 是专门用于管理和构建 Java 项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布 …… &#xff09; 提供了一套…

Minio搭建文件服务器

目录 一、Minio使用&#x1f355;1.1 Minio介绍1.2 Minio安装1.3 Minio入门 二、创建后端服务&#x1f953;2.1创建一个SpringBoot项目2.2 代码实现2.2.1 FileUploadController2.3.2 FileUploadService2.3.3 MinioProperties2.3.4 MinioServerApplication2.2.4 配置文件内容 三…

如何使用固定公网地址SFTP远程传输文件至安卓Termux本地目录?

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…