qt动态添加窗口到垂直布局

引言

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

实现

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

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,下一次选中另一个窗口的时候,将之前选中的窗口边框设置为默认边框颜色,新选中的窗口设置为选中的窗口边框。

注意

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Storm精华问答 | Kafka在Storm中的角色是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Storm是Twitter开源的分布式实时大数据处理框架&#xff0c;被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍&#xff0c;比如网站统计、推荐系统、预警系统、金融系统等&#xff0c; 大数据实时处理…

SonarQube开机自启动

1、创建服务 vi /etc/init.d/sonar内容如下&#xff0c;其中标红内容为服务绝对路径&#xff1a; #!/bin/sh # # rc file for SonarQube # # chkconfig: 345 96 10 # description:SonarQube system (www.sonarsource.org) # ### BEGIN INIT INFO # Provides:…

qt通过代码创建滚动区域,添加滚动区域到窗口

引言 继承于QWidget创建的项目&#xff0c;要想在QWidget中添加很多子控件&#xff0c;考虑到若是子控件的数目不确定&#xff0c;太多的时候就需要添加滚动条来实现滚动查看&#xff0c;于是可以自定义一个类&#xff0c;在该类中实现滚动区域和滚动窗口的创建&#xff0c;然…

SwitchHosts提示切换hosts失败!没有修改'C:\WINDOWS\system32\drivers\etc\hosts'的权限问题

文章目录1. 找到hosts文件2. 右键属性3. 去除只读勾选4. 属性安全编辑5. 点击选择修改和写入即可1. 找到hosts文件 根据将地址粘贴到窗口进行搜索找到"hosts"文件 地址: C:\Windows\System32\drivers\etc2. 右键属性 鼠标放在hosts文件上右键属性 3. 去除只读勾…

使用云原生buildpacks将你的代码转换成Docker Image | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;当我们在大概七年前将buildpack技术开源的时候&#xff0c;我们就知道这项技术将大大简…

qt设置鼠标追踪后,鼠标还是需要点击后才能变样式

引言 鼠标在窗口的四个边和四个角后会显示不同的样式。在构造函数中设置了鼠标追踪&#xff0c;但是鼠标依然需要点击后才能改变样式&#xff0c;究其原因是只设置了父窗口的鼠标追踪&#xff0c;没有设置子控件的追踪&#xff0c;当然是子控件与父窗口的鼠标追踪有关才需要设…

Docker镜像备份与迁移

文章目录1. 将容器备份成镜像2. 将镜像备份成本地文件3.从本地加载备份文件恢复镜像1. 将容器备份成镜像 用centos镜像创建一个名称为mycentos的容器 docker run -id --namemycentos centos:7查看所有容器 docker ps -a将容器mycentos保存为镜像 docker commit mycentos my…

明星企业内推+BAT面经,长三角的开发者联合起来!

戳蓝字“CSDN云计算”关注我们哦&#xff01;“为什么公司宁愿花20K招新人&#xff0c;也不愿给老员工加到20K&#xff1f;”这个热门的微博话题戳起了很多人的痛处&#xff0c;但根据 CSDN &《程序员》杂志发布的「中国软件开发者薪资调查报告」&#xff0c;有32.98%的开发…

Spring4.x整合Axis1.4发布WebService服务

Spring4.x整合Axis1.4发布WebService服务 文章目录一、服务端部署1. 在web.xml文件中添加映射路径和spring监听2. 添加spring-axis.xml配置文件3. 添加server-config.wsdd配置文件4. 对外发布服务外壳类5. 添加接口类6. 添加接口逻辑实现类7. 浏览器测试二、客户端部署2.1 axis…

阿里云亚太市场份额第一;AWS宣布在香港推出新区域;Facebook出成绩单;微软在美国西部开建第五个大型云平台...

戳蓝字“CSDN云计算”关注我们哦&#xff01;重磅先知 Gartner&#xff1a;阿里云亚太市场份额第一AWS宣布在香港推出新的区域一直在水逆的Facebook出成绩单微软在美国西部开建第五个大型云平台重磅快报Gartner&#xff1a;阿里云亚太市场份额第一4月24日&#xff0c;市场研究…

qt私有信号拙见

理解 信号在使用的时候&#xff0c;一般在类中声明为私有信号&#xff0c;直接在拥有该信号的类中调用emit发送&#xff0c;但是可以在其它类中来通过创建拥有该信号的类对象&#xff0c;并通过connect()函数来绑定该私有信号与相应的槽函数。当然&#xff0c;私有信号只能在本…

1s完成 大文件分割方案

按行数分割方案&#xff1a; 执行命令&#xff1a; split -l 1000 i.txt -d -a 4 gblfy_格式&#xff1a;split -l 行数 文件名 -d -a 4 gblfy_ 解析&#xff1a; 1、每个文件1000行(-l 1000)&#xff1b; 2、文件名称后缀系数不是字母而是数字&#xff08;-d&#xff09;&…

git通过指令查看某一个已经修改的文件的改动

方法 提交文件的时候提示文件发生了变动&#xff0c;这时若是要查看文件具体发生了什么变动&#xff0c;只需在命令行输入下述指令便可&#xff1a;git diff 文件名。 上面截图中可以通过git status来查看该项目中各文件的状态&#xff0c;可以看到文件 modified: SceneModule…

开发者如何写好技术简历?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;文章来源一位实验室朋友的投稿&#xff0c;斩获BAT头条等公司的offer,金三银四一份漂亮…

Linux系统查看文件中关键词出现的次数

在Linux系统中的文件目录下&#xff1a; 执行以下命令&#xff1a; grep -o KeyWord 03.txt | wc -l格式&#xff1a;grep -o ‘关键词’ fileName | wc -l 注&#xff1a; ‘KeyWord’是指定的关键词&#xff1b; 03.txt是指定的文本 | wc -l是统计次数

设计模式--中介者模式

实验19&#xff1a;中介者模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解中介者模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用中介者模式解决实际问题。 [实验任务]&#xff1a;虚拟聊天室 在“虚拟聊天…

qt自定义窗口,其绘制的窗口边框线显示不全

引言 自定义窗口&#xff0c;该窗口包含标题栏&#xff0c;默认整个窗口的边框线为蓝色&#xff0c;当点击该窗口的时候&#xff0c;窗口的边框线便为红色。程序在运行的时候&#xff0c;窗口的边框线只显示了左右两边的线&#xff0c;没有显示上下边的线。 示例 效果&#…

防火墙contos6.8操作手册

一、基本操作&#xff1a; 查看防火墙状态 service iptables status 停止防火墙 service iptables stop 启动防火墙 service iptables start 重启防火墙 service iptables restart 永久关闭防火墙 chkconfig iptables off 永久关闭后重启 chkconfig iptables on 二、查看…

漫画:996的本质是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;从前&#xff0c;有一个卖苹果的小贩&#xff0c;小贩每天都能拥有24个神奇的苹果。他…

qt整个窗口上绘制矩形与在窗口的子控件上绘制矩形

引言 创建一个基于QDialog的项目&#xff0c;自动生成ui文件&#xff0c;此时再添加新文件&#xff0c;创建一个基于QWidget的ui类&#xff0c;此类具有自定义标题栏&#xff0c;让该自定义类显示在窗口Dialog上&#xff0c;一开始具有红色的边框线&#xff0c;且四角围绕四个…