管理器Widgets(06):【类】QStackedWidget [官翻]

本文详细介绍了QStackedWidget类,它提供了一种在用户界面中实现类似QTabWidget的堆叠式小部件管理。讲解了构造、属性操作、增删查、信号重写以及受保护函数等内容,适用于创建动态切换的界面组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QStackedWidget 类

QStackedWidget类提供了一个小部件堆栈,其中一次只能看到一个小部件。

Header#include < QStackedWidget >
qmakeQT += widgets
InheritsQFrame
Inherited By

详细说明

QStackedWidget可用于创建类似于QTabWidget提供的用户界面。它是构建在QStackedLayout类之上的一个方便的布局小部件。

与QStackedLayout一样,QStackedWidget可以构造并填充许多子Widget(“pages”):

     QWidget *firstPageWidget = new QWidget;
     QWidget *secondPageWidget = new QWidget;
     QWidget *thirdPageWidget = new QWidget;

     QStackedWidget *stackedWidget = new QStackedWidget;
     stackedWidget->addWidget(firstPageWidget);
     stackedWidget->addWidget(secondPageWidget);
     stackedWidget->addWidget(thirdPageWidget);

     QVBoxLayout *layout = new QVBoxLayout;
     layout->addWidget(stackedWidget);
     setLayout(layout);

QStackedWidget不提供用户切换页面的内在方法。这通常是通过QComboBox或QListWidget来完成的,QListWidget存储QStackedWidget页面的标题。例如:

     QComboBox *pageComboBox = new QComboBox;
     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);

填充堆叠的小部件时,这些小部件被添加到内部列表中。函数的作用是:返回列表中小部件的索引。这些小部件可以使用addWidget() 函数添加到列表的末尾,也可以使用insertWidget() 函数插入到给定的索引中。函数的作用是:从堆叠的小部件中移除一个小部件。堆叠小部件中包含的小部件数量可以使用count() 函数获得。

函数的作用是:返回给定索引位置的小部件。屏幕上显示的小部件的索引由currentIndex() 给定,可以使用setCurrentIndex() 更改。以类似的方式,可以使用currentWidget() 函数检索当前显示的小部件,并使用setCurrentWidget() 函数进行更改。

每当堆叠小部件中的当前小部件发生更改或从堆叠小部件中移除小部件时,将分别发出currentChanged() 和widgetRemoved() 信号。

属性

  1. count: const int 此堆叠小部件包含的小部件数

    默认情况下,此属性包含值0。

    • int count() const
  2. currentIndex: int 可见小部件的索引位置

    如果没有当前小部件,则当前索引为-1。

    默认情况下,此属性包含值-1,因为堆栈最初为空。

    • int currentIndex() const
    • void setCurrentIndex(int index)

    信号

    • void currentChanged(int index)

公共函数

构造和析构

  1. QStackedWidget(QWidget *parent = nullptr)
  2. virtual ~QStackedWidget()

属性相关

  1. int count() const
  2. int currentIndex() const
  3. void setCurrentIndex(int index)

增删查

  1. int addWidget(QWidget *widget)
  2. int insertWidget(int index, QWidget *widget)
  3. void removeWidget(QWidget *widget)
  4. int indexOf(QWidget *widget) const
  5. QWidget * widget(int index) const
  6. QWidget * currentWidget() const

公共槽

  1. void setCurrentIndex(int index)
  2. void setCurrentWidget(QWidget *widget)

信号

  1. void currentChanged(int index)
  2. void widgetRemoved(int index)

重写的受保护函数

  1. virtual bool event(QEvent *e) override
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值