Qt动态布局

背景:
有些数据是不定时加载的,比如连接蓝牙,连接1个蓝牙设备就会添加1个蓝牙的相关信息;
1个蓝牙设备数据与另1个蓝牙设备数据不能间隔太大,但是使用QVBoxLayout就会将上面2个蓝牙占满全屏,即使使用弹簧,也只能满足2个蓝牙向上对其;
假如再次连接多个蓝牙,因为前面有了弹簧,就会使全部蓝牙不能向上对其了.

解决办法:
动态布局.
每次有新的设备连接就重新布局,再最后面添加弹簧,这样就能保证所有数据向上对其

    QLayout *layout = m_tFrame->layout();
    QVBoxLayout *vLayout = new QVBoxLayout;
    vLayout->setMargin(0);
    vLayout->setSpacing(0);
    if (layout) {
        //将旧的蓝牙设备数据取出来放在新的QVBoxLayout中
        while (QLayoutItem *item = layout->takeAt(0)) {
            AdapterWidget *widget = dynamic_cast<AdapterWidget *>(item->widget());

            //若当前为nullptr,还需要继续判断后面的数据
            if (!widget)
                continue;

            //当蓝牙属于关闭状态时,设置最小高度
            //开启后,设置最大值(破坏setFixedHeight)
            if (!widget->getSwitchState()) {
                widget->setFixedHeight(minHeight);
            } else {
                widget->setMaximumHeight(maxHeight);
            }
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值