Qt 堆栈窗体QStackedWidget使用
创始人
2024-02-09 09:45:36

QStackedWidget控件相当于一个容器,提供一个空间来存放一系列的控件,并且每次只能有一个控件是可见的,即被设置为当前的控件。QStackedWidget可用于创建类似于QTabWidget提供的用户界面。 它是一个构建在QStackedLayout类之上的方便布局小部件。

在这里插入图片描述

方法

  • int addWidget(QWidget *widget) 添加页面,并返回页面对应的索引
  • int count() const 获取页面数量
  • int currentIndex() const 获取当前页面的索引
  • QWidget* currentWidget() const 获取当前页面
  • int indexOf(QWidget *widget) const 获取QWidget页面所对应的索引。可以用来判断QWidget是否存在QStackedWidget中,不存在返回值为-1。
  • int insertWidget(int index, QWidget *widget) 在索引index位置添加页面
  • void removeWidget(QWidget *widget) 移除QWidget页面,并没有被删除,只是从布局中移动,从而被隐藏。
  • QWidget* widget(int index) const 获取索引index所对应的页面

信号

  • void currentChanged(int index) 当前页面发生变化时候发射,index为新的索引值
  • void widgetRemoved(int index) 页面被移除时候发射,index为页面对应的索引值

槽函数

  • void setCurrentIndex(int index) 设置索引index所在的页面为当前页面
  • void setCurrentWidget(QWidget *widget) 设置QWidget页面为当前页面
#pragma once
#include 
#include "ui_stackedwidget.h"
#include "common/stylemgr.h"class StackedWidget : public QWidget
{Q_OBJECT
private:Ui_stackedwidget *ui;QWidget *aqwidget = nullptr;public:StackedWidget(QWidget *parent = nullptr);~StackedWidget();public slots:void AddAWidget();void ShowAWidget();void DelAWidget();void ShowIndex0();void ShowCurrentChanged(int index);void ShowWidgetRemoved(int index);
};
#include "stackedwidget.h"StackedWidget::StackedWidget(QWidget *parent) : QWidget(parent), ui(new Ui_stackedwidget())
{ui->setupUi(this);StyleMgr::SetStyleToWidgetByCssFile(this, ":/helloqt/resources/qss/custom/stackedwidget.qss");QStringList list;list << "one page"<< "two page"<< "third page";ui->stackedwidget_comboBox->addItems(list);connect(ui->stackedwidget_comboBox, QOverload::of(&QComboBox::activated), ui->stackedwidget_stackedWidget, &QStackedWidget::setCurrentIndex);connect(ui->stackedwidget_stackedWidget, QOverload::of(&QStackedWidget::currentChanged), this, ShowCurrentChanged);connect(ui->stackedwidget_stackedWidget, QOverload::of(&QStackedWidget::widgetRemoved), this, ShowWidgetRemoved);connect(ui->stackedwidget_pushButton_1, &QPushButton::clicked, this, AddAWidget);connect(ui->stackedwidget_pushButton_2, &QPushButton::clicked, this, ShowAWidget);connect(ui->stackedwidget_pushButton_3, &QPushButton::clicked, this, DelAWidget);connect(ui->stackedwidget_pushButton_4, &QPushButton::clicked, this, ShowIndex0);
}StackedWidget::~StackedWidget()
{delete ui;
}void StackedWidget::AddAWidget()
{if (aqwidget == nullptr){aqwidget = new QWidget(ui->stackedwidget_stackedWidget);aqwidget->setObjectName("stackedwidget_page_a");}int index = ui->stackedwidget_stackedWidget->indexOf(aqwidget);qDebug() << index;if (index < 0){ui->stackedwidget_stackedWidget->addWidget(aqwidget);}
}void StackedWidget::ShowAWidget()
{if (aqwidget != nullptr){ui->stackedwidget_stackedWidget->setCurrentWidget(aqwidget);}
}void StackedWidget::DelAWidget()
{if (aqwidget != nullptr){ui->stackedwidget_stackedWidget->removeWidget(aqwidget);}
}void StackedWidget::ShowIndex0()
{ui->stackedwidget_stackedWidget->setCurrentIndex(0);
}void StackedWidget::ShowCurrentChanged(int index)
{QMessageBox msgBox;msgBox.setText(QString("ShowCurrentChanged index %1").arg(index));msgBox.exec();
}void StackedWidget::ShowWidgetRemoved(int index)
{QMessageBox msgBox;msgBox.setText(QString("ShowWidgetRemoved index %1").arg(index));msgBox.exec();
}

效果

在这里插入图片描述
在这里插入图片描述

github

https://github.com/weichangk/helloqt

参考

https://doc.qt.io/qt-5/qstackedwidget.html

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...