84.QStackedLayout

堆叠布局,同一时间只展示一个控件

画蓝框的地方就是一个堆叠布局,每当我点击右侧的按钮时都会换一个控件

目录

1  基本操作

1.1  构造函数

1.2  添加子控件

1.3  切换

1.3.1  通过索引值切换

1.3.2  通过控件切换

1.4  展示模式

1.4.1  设置 setStackingMode()

1.4.2  获取 stackingMode()

2  信号

2.1  当前控件改变时触发 currentChanged()

2.2  控件被移除时触发 widgetRemoved()


1  基本操作

1.1  构造函数

  • 使用QStackedLayout时,最好把self.setLayout(layout)放到添加控件之前
  • QStackedLayout()

构造函数中可以什么都不放,然后在后面添加控件

  • QStackedLayout(QWidget)

这个的意思是放一个父对象

就不展示了

  • QStackedLayout(QLayout)

这个的意思也是放一个父对象,父对象可以是QLayout

就不展示了

1.2  添加子控件

addWidget是直接添加,不测试了

insertWidget()是插入指定位置,也是和直接添加差不多

  • 由于控件堆叠在一起,所以看不出实际的效果

insertWidget()的返回值是插入的索引数

如果插入0还是显示最早加入的控件,但是插入后的索引数确实是0,然后设置之前0位的对象自动变为1

如果insertWidget()的参数索引值越界(超出控件数)了,会默认把控件放到最后

我们可以通过Widget获取指定索引的控件对象

现在我们获取索引为0的对象

为了验证是否正确,我们获取一下索引的text

1.3  切换

1.3.1  通过索引值切换

1.3.1.1  切换 setCurrentIndex()

可以连接槽函数接一个按钮搞,我就直接用代码搞了

切换之前

现在我们切换为1号标签

1.3.1.2  获取切换的控件索引值 currentIndex()

1.3.2  通过控件切换

1.3.2.1  切换 setCurrentWidget()

切换之前

切换为label2

1.3.2.2  获取切换控件对象 currentWidget()

1.4  展示模式

其中涉及到一个参数 QStackedLayout.StackingMode,可以填写的值为

  • QStackedLayout.StackOne 只有当前小控件可见,默认值
  • QStackedLayout.StackAll 所有小部件都可见,当前控件显示在最前

这个只和hide()有关

1.4.1  设置 setStackingMode()

设置前是这样的

我们现在隐藏标签

隐藏完标签1并没有显示标签2

我们现在设置展示模式

  • setStackingMode()一定要位于hide()之前才有效

此时会显示标签2

当我们把标签1变小,也能看到后面的标签2

当然如果标签2变小了也是可以看到标签3的,就不在这测试了

1.4.2  获取 stackingMode()

2  信号

2.1  当前控件改变时触发 currentChanged()

会传递一个int,int为当前控件的索引

我们再搞一个按钮用于切换当前控件

这个按钮点一下就能切换一下

我们要把窗口分为两部分,要不然我的按钮就被覆盖了

现在窗口是这样的

我们点击一下按钮

2.2  控件被移除时触发 widgetRemoved()

会传递一个int,int为被移除控件的索引

我们换一下按钮的槽函数,当我按一下,它就会把label删除

现在我的窗口是这样的

我们现在点击一下按钮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值