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

qt QStackedWidget详解

1、概述

QStackedWidget是Qt框架中的一个控件,它提供了一个堆叠式的界面,允许在同一空间内切换显示多个页面(或称为层)。每个页面都可以包含不同的内容,如文本、图像、按钮或其他小部件。与QTabWidget不同,QStackedWidget本身不提供标签来切换页面,但你可以结合其他控件(如QToolBar、QComboBox或QTabBar)来实现页面切换功能。QStackedWidget非常适合用于创建具有多个视图或功能区域的应用程序,这些区域可以通过编程方式或用户交互来动态显示。

2、重要方法

QStackedWidget类提供了一系列方法来管理其堆叠的页面。以下是一些关键的方法:

  • addWidget(QWidget *widget):向QStackedWidget中添加一个新页面,并将其添加到内部页面列表中。这个方法会自动为新页面分配一个索引。
  • insertWidget(int index, QWidget *widget):在指定索引处插入一个新页面。如果索引超出了当前页面范围,页面将被添加到末尾。
  • removeWidget(QWidget *widget):从QStackedWidget中移除指定的页面。页面本身不会被删除,只是从堆叠中移除。
  • currentIndex():返回当前显示的页面的索引。
  • setCurrentIndex(int index):设置当前显示的页面为指定索引的页面。
  • currentWidget():返回当前显示的页面的QWidget指针。
  • widget(int index):返回指定索引处的页面的QWidget指针。
  • count():返回QStackedWidget中页面的总数。

3、重要信号
  • currentChanged(int index):当当前显示页面的索引改变时发射
  • widgetRemoved(int index):当某个页面被移除时发射,根据索引定位。
#include <QApplication>  
#include <QMainWindow>  
#include <QStackedWidget>  
#include <QWidget>  
#include <QVBoxLayout>  
#include <QLabel>  
#include <QPushButton>  class MainWindow : public QMainWindow {  Q_OBJECT  public:  MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {  // 设置窗口标题和大小  setWindowTitle("QStackedWidget Example");  resize(400, 300);  // 创建一个QStackedWidget  QStackedWidget *stackedWidget = new QStackedWidget(this);  // 创建第一个页面并设置内容  QWidget *page1 = new QWidget();  QVBoxLayout *layout1 = new QVBoxLayout(page1);  QLabel *label1 = new QLabel("This is the first page.", page1);  layout1->addWidget(label1);  // 创建第二个页面并设置内容  QWidget *page2 = new QWidget();  QVBoxLayout *layout2 = new QVBoxLayout(page2);  QLabel *label2 = new QLabel("This is the second page.", page2);  layout2->addWidget(label2);  // 创建第三个页面并设置内容  QWidget *page3 = new QWidget();  QVBoxLayout *layout3 = new QVBoxLayout(page3);  QLabel *label3 = new QLabel("This is the third page.", page3);  layout3->addWidget(label3);  // 向QStackedWidget中添加页面  stackedWidget->addWidget(page1);  stackedWidget->addWidget(page2);  stackedWidget->addWidget(page3);  // 创建一个按钮栏来切换页面  QWidget *buttonBar = new QWidget(this);  QHBoxLayout *buttonLayout = new QHBoxLayout(buttonBar);  QPushButton *button1 = new QPushButton("Page 1", buttonBar);  QPushButton *button2 = new QPushButton("Page 2", buttonBar);  QPushButton *button3 = new QPushButton("Page 3", buttonBar);  buttonLayout->addWidget(button1);  buttonLayout->addWidget(button2);  buttonLayout->addWidget(button3);  // 连接按钮点击信号到槽函数来切换页面  connect(button1, &QPushButton::clicked, this, [stackedWidget]() {  stackedWidget->setCurrentIndex(0);  });  connect(button2, &QPushButton::clicked, this, [stackedWidget]() {  stackedWidget->setCurrentIndex(1);  });  connect(button3, &QPushButton::clicked, this, [stackedWidget]() {  stackedWidget->setCurrentIndex(2);  });  // 创建一个中心部件并设置布局  QWidget *centralWidget = new QWidget(this);  QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);  mainLayout->addWidget(buttonBar);  mainLayout->addWidget(stackedWidget);  // 将中心部件设置为主窗口的部件  setCentralWidget(centralWidget);  }  
};  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  // 创建并显示主窗口  MainWindow mainWindow;  mainWindow.show();  // 进入应用程序的主事件循环  return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.mrgr.cn/news/63319.html

相关文章:

  • nginx-proxy-manager实现反向代理+自动化证书(实战)
  • 云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航
  • WPS 中使用PPT导出视频
  • 在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法
  • PyTorch提供的多GPU数据并行nn.DataParallel
  • VLAN使用实验
  • Gemini API 和 Google AI Studio 升级,提升搜索准确性和响应能力
  • L 波段射频信号采集回放系统
  • window与Linux基础-1
  • Jenkins You‘re using ‘Known hosts file‘,known_hosts file does not exist
  • QList
  • 图片批量处理神器将每个文件夹中的多张图片拼接,一键实现横向和纵向的长图拼接效果,让你的图片处理更高效
  • 漓江景区景点推荐
  • LLMs在股票投资组合崩溃中的时间关系推理
  • 当贝F6和当贝F7Pro区别对比:新品当贝F7Pro性能配置全面升级
  • 39. 组合总和
  • SpringBoot3集成Swagger接口文档功能、接口排序以及如何设置接口页面的title/keyword/description?
  • BeanFactory与ApplicationContext的关系
  • CVPR2024:完全测试时域适应​​​​(Test-time Adaptation)的目标检测
  • k8s 小版本升级
  • C++类和对象上
  • qt QToolBar详解
  • 测试人必会 K8S 操作之 Dashboard
  • 最经典知识库问答数据集
  • 【Golang】Gin框架中如何使用JWT来实现登录认证
  • 计算机视觉-显著性检测实验报告