Qt之QStackedWidget多界面切换

转载 2018年04月17日 15:39:24

简述

QStackedWidget继承自QFrame。

QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面。

QStackedWidget可用于创建类似于QTabWidget提供的用户界面。

使用

一个QStackedWidget可以用一些子页面进行填充。

效果

这里写图片描述

源码

QPushButton *pButton = new QPushButton(this);
QLabel *pFirstPage= new QLabel(this);
QLabel *pSecondPage = new QLabel(this);
QLabel *pThirdPage = new QLabel(this);
m_pStackedWidget = new QStackedWidget(this);

pButton->setText(QStringLiteral("点击切换"));
pFirstPage->setText(QStringLiteral("一去丶二三里"));
pSecondPage->setText(QStringLiteral("青春不老,奋斗不止!"));
pThirdPage->setText(QStringLiteral("纯正开源之美,有趣、好玩、靠谱。。。"));

// 添加页面(用于切换)
m_pStackedWidget->addWidget(pFirstPage);
m_pStackedWidget->addWidget(pSecondPage);
m_pStackedWidget->addWidget(pThirdPage);

QVBoxLayout *pLayout = new QVBoxLayout();
pLayout->addWidget(pButton, 0, Qt::AlignLeft | Qt::AlignVCenter);
pLayout->addWidget(m_pStackedWidget);
pLayout->setSpacing(10);
pLayout->setContentsMargins(10, 10, 10, 10);
setLayout(pLayout);

// 连接切换按钮信号与槽
connect(pButton, &QPushButton::clicked, this, &MainWindow::switchPage);

// 切换页面
void MainWindow::switchPage()
{
    int nCount = m_pStackedWidget->count();
    int nIndex = m_pStackedWidget->currentIndex();

    // 获取下一个需要显示的页面索引
    ++nIndex;

    // 当需要显示的页面索引大于等于总页面时,切换至首页
    if (nIndex >= nCount)
        nIndex = 0;

    m_pStackedWidget->setCurrentIndex(nIndex);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

接口

  • int addWidget(QWidget * widget)

    添加页面,并返回页面对应的索引

  • int count() const

    获取页面数量

  • int currentIndex() const

    获取当前页面的索引

  • QWidget * currentWidget() const

    获取当前页面

  • int indexOf(QWidget * widget) const

    获取QWidget页面所对应的索引

  • 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页面为当前页面

总结

一般情况,常用的两种方式:


  • 根据currentWidget()来判断当前页面,然后通过setCurrentWidget()来设置需要显示的页面。

  • 根据currentIndex()来判断当前页面索引,然后通过setCurrentIndex()来设置需要显示的页面。




转载自:https://blog.csdn.net/liang19890820/article/details/51614346

初学Qt——菜单栏QAction+ QstackedWidget堆栈窗体实现切换分页

QstackedWidget 堆栈窗体,具体不作详述,stackedWidget 主要实现效果类似与界面分页效果,主要常与QListWidget QtreeWidget QTableWidget等结合...
  • qq_31117007
  • qq_31117007
  • 2016-04-12 04:00:00
  • 3571

Qt布局管理: 堆栈窗体QStackedWidget类(纯代码实现)

堆栈窗体QStackedWidget类是经常在应用程序中用到的,在实际应用中,堆栈窗体多与列表框QlistWidget和下拉列表框QCombobox配合使用。...
  • rl529014
  • rl529014
  • 2016-05-26 13:49:41
  • 2971

带切换动画的QStackedWidget

带动画的QStackedWidget
  • SuperVictim
  • SuperVictim
  • 2016-12-02 16:39:52
  • 2396

【Qt5开发及实例】5、布局管理之堆栈窗体QStackedWidget类

老规矩,给个目标实现以下: 代码展示, 首先创建一个项目,不要界面,选择基类是QDialog这个,后面名字的话随便改改 我的类名是:StackDlg 所以之后,只要在stackdlg.h...
  • cutter_point
  • cutter_point
  • 2014-12-21 20:05:28
  • 5268

Qt之QStackedWidget

简述QStackedWidget继承自QFrame。QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面。QStackedWidget可用于创建类似于QTabWidget提供的用...
  • u011012932
  • u011012932
  • 2016-06-08 16:57:33
  • 24537

Qt之布局管理——堆栈窗体QStackedWidget

1.控件位置 Containers→StackedWidget 2.控件介绍 StackedWidget控件中文称作“控件栈”。Qt提供了这样一个控件栈,可以使开发人员用栈管理控件像用栈管理其他...
  • luoyouren
  • luoyouren
  • 2016-04-07 16:20:24
  • 7051

QT多个界面切换调用

QT 多界面切换
  • qq_17747193
  • qq_17747193
  • 2017-02-06 09:49:07
  • 1503

Qt之QStackedWidget和QStackedLayout

一、QStackedLayout类 QStackedLayout类可以对一组子窗口部件进行摆放,或者对它们进行“分页”,而且一次只显示其中一个,而把其他的子窗口部件或者分页都隐藏起来,QStacke...
  • light_in_dark
  • light_in_dark
  • 2016-12-07 17:06:07
  • 635

Qt5布局管理(三)——QStackedWidget堆栈窗口类

堆栈窗口类QStackedWidgetCode@github:https://github.com/LeeHDsniper/LearnQt/tree/master/CH303实例效果 如上图,堆栈窗...
  • LeeHDsniper
  • LeeHDsniper
  • 2016-04-05 23:39:45
  • 3822

Qt布局管理-堆栈窗体QStackedWidget类

堆栈窗体多于列表框QListWidget及下拉列表框QComboBox配合使用。 (1)新建项目,基类QDialog,类名StackDlg,取消创建界面, (2)在stackdlg.h文件中添加代...
  • u012484779
  • u012484779
  • 2016-06-29 23:08:32
  • 971
收藏助手
不良信息举报
您举报文章:Qt之QStackedWidget多界面切换
举报原因:
原因补充:

(最多只允许输入30个字)