引言

程序运行的过程中根据需要动态的创建窗口,没创建一个窗口,就加入列表中,使其竖直展示各个窗口。这样的操作实际是没创建一个窗口,就将其加入到垂直布局中,当点击不同的窗口时能够实现对被点击串钩的区分,同理能够进行右键删除之前已经加入到垂直布局中的窗口。

实现

首先将动态创建的各个窗口添加到垂直布局中,调整布局所在窗口的长度。

void LayoutListWidget::setLayout()
{m_widget = ui->scrollAreaWidgetContents;m_vLayout = new QVBoxLayout(m_widget);m_vLayout->setSpacing(10);m_vLayout->setContentsMargins(5,5,5,5);
}

下面是创建窗口,然后将创建的窗口添加到垂直布局中。

//下面是添加创建的窗口到布局m_layoutDisplayWin = new LayoutShowForm(tempLayout,this);
//根据标识保存创建的窗口,这里根据id保存对应的窗口 m_preLayoutWinMap.insert(tempLayout.id,m_layoutDisplayWin);
//将创建的布局预览窗口添加到布局中
m_vLayout->addWidget(m_layoutDisplayWin);
adjustLayoutSize();//调整布局窗口的大小

因为窗口中含有一个滚动区域,滚动区域中自带了一个窗口,让指针m_widget指向滚动区域的窗口,动态添加的窗口全部都在这个窗口上布局显示。添加滚动区域所在窗口的垂直布局,每创建一个窗口,就向布局中添加一个窗口,同时调整滚动区域所在窗口的长度,使其能正常显示所添加的窗口。

删除

这里只是简单的提供一下思路,删除的时候根据被删除的窗口的id,在之前创建窗口的时候保存的窗口中找到要删除的窗口,delete掉该窗口,将其从之前保存的容器中删除,然后调整布局窗口的大小。

QMap<int,LayoutShowForm*>::iterator iter = m_preLayoutWinMap.find(id);if (iter != m_preLayoutWinMap.end()) {LayoutShowForm *temp = *iter;delete temp;temp = nullptr;m_preLayoutWinMap.remove(id);}adjustLayoutSize();//调整窗口布局长度

调整布局的大小

void LayoutListWidget::adjustLayoutSize()
{int height = m_num * m_preLayoutW + (m_num+1) * m_rowWidth;m_widget->setFixedHeight(height);
}

其中m_num为布局中的窗口数,也就是创建的窗口数,m_preLayoutW为每个窗口的宽,m_rowWidth为垂直布局中竖直方向相隔的高度。

切换

当左键点击该窗口,获取该窗口的id,将该窗口的边框设置为选中的颜色。记录当前选中的窗口id,作为上一次被选中的窗口id,下一次选中另一个窗口的时候,将之前选中的窗口边框设置为默认边框颜色,新选中的窗口设置为选中的窗口边框。

注意

此文重在理解,没有完整的代码,重在理解其思路。

qt动态添加窗口到垂直布局相关推荐

  1. 【Qt教程】2.2 - Qt5 布局管理器(水平、垂直、栅格布局)、弹簧、设计一个登陆界面

    使用布局管理器,来设计一个登陆界面 都是操作,没代码没理论.参照:Qt设计一登陆窗口布局 1. 新建空工程 双击.ui文件,进入界面设计区. 我们新建工程时候,使用的是QMainWindow类,会自动 ...

  2. qt5 python gui programming_Python GUI教程(五):通过Qt设计师在GUI中添加窗口部件

    本篇将会介绍到 使用qt设计师添加窗口部件到我们的GUI中: 当我们移动光标到菜单时更新状态栏信息: 通过一个菜单关闭应用程序: 添加一个选项卡.按钮和刻度盘: 继续添加一个菜单 如同第二篇文章中使用 ...

  3. Qt实现界面的窗口的局部动态添加并布局

    此程序实现的是点击界面的添加界面按钮,新增加一个窗口,并实现窗口的布局,随着窗口个数的在布局中的增加,窗口大小自动缩小.创建基于QT widget Application的应用程序,选择基类QDial ...

  4. Qt窗口部件与布局之二:布局管理

    第3章讲述了一些窗口部件,当时往界面上拖放部件时都是随意放置的,这对于学习部件的使用没有太大的影响,但是,对于一个完善的软件,布局管理却是必不可少的. 无论是想要界面中部件有一个很整齐的排列,还是想要 ...

  5. 【Qt】水平和垂直布局

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 水平布局常用方式 04. 水平布局常用设置 4.1 设置外边距 4.2 设置间距 4.3 添加伸缩空间 4.4 添加控件 ...

  6. Qt水平布局,垂直布局和嵌套布局 layout

    布局是一个软件质量重要的一方面,体现了软件设计的水平,一个好的软件必然有个好的布局. Qt中有水平布局:QHBoxLayout 垂直布局:QVBoxLayout 现在我们有这样一个需求,我们希望有三个 ...

  7. Qt 垂直布局 (QVBoxLayout)

    Qt 垂直布局 (QVBoxLayout) 上一节说了水平布局:https://blog.csdn.net/weixin_42837024/article/details/82114258 QVBox ...

  8. Qt之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)

    简述 QBoxLayout可以在水平方向或垂直方向上排列控件,由QHBoxLayout.QVBoxLayout所继承. QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列.  QVB ...

  9. android动态居中布局,Android动态添加布局的两种方式

    释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...

最新文章

  1. 第三周项目二-本月有几天?
  2. Day2_CSS_CSS语法及HTML结合
  3. Android热修复升级探索——SO库修复方案 1
  4. Dynamic动态类型
  5. 主板没有rgb接口怎么接灯_老电脑也玩一下RGB,一次酷冷至尊MB400L智瞳机箱安装体验...
  6. BootStrap中Model模态框点击除了×号和关闭按钮外的其他区域不消失
  7. 通过纯真IP数据库查询IP归属地信息
  8. Linux核心进程管理命令
  9. 阿里70后程序员的 26 个职场感悟
  10. blender建模制作课堂笔记
  11. hive的dual表
  12. Cocos Creator AnySDK支付问题
  13. 如何区分电梯卡为id卡ic卡_怎么看小区门禁卡是ic还是id
  14. 入驻QQ一天就爆满,Midjourney中文版来了
  15. 安卓古筝软件_超详细自学软件测评|小提琴/吉他/电子琴/尤克里里/电子鼓
  16. 电磁场与仿真软件(19)
  17. 多少秒算长镜头_电影中什么是长镜头画面(9个经典长镜头)
  18. IB课程必修课TOK到底有啥用?
  19. 实验七 二极管包络检波实验
  20. 夜半加班之附魔吃药篇!

热门文章

  1. 阿里云杜欢:云上Serverless开发能力将成为前端的“金手指”
  2. IP应用加速技术详解:如何提升动静混合站点的访问速率?
  3. Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】
  4. IPv6时代已来:双十一中的IPv6大规模应用实践
  5. 机器学习:从入门到晋级
  6. 2018年最佳深度学习书单
  7. 《阿里巴巴Java开发手册》发布一周年!你不知道的背后故事!
  8. 手把手一起 图形化安装 k8s 集群
  9. 透析《长安十二时辰》里的望楼,人类在唐朝就有 5G 愿望了?
  10. 要闻君说:微软拿下五角大楼超大云服务订单!恒大玩儿起了充电桩and新能源汽车?苹果公司要放弃自动驾驶业务?...