qt中创建控件布局以及删除原有布局和控件

引言

当根据数据来创建控件并布局时,如果数据更新,那么之前创建的控件便需要删除后重新创建布局。该文主要说明将原来的布局和控件删除,重新创建并布局。

示例

先看一下ui文件:
在这里插入图片描述
下面是实现代码:


void StatusViewDialog::initSourcesView()
{deleteSourcesOrignalLayoutCtrls();QWidget *sourcesWidget = ui->scrollAreaWidgetContents;QVBoxLayout *vLayout = new QVBoxLayout(sourcesWidget);vLayout->setSpacing(5);vLayout->setContentsMargins(5,5,5,5);int page = 12;QLabel *curLabel = new QLabel(QStringLiteral("当前页:"));QLineEdit *curEdit = new QLineEdit(QString::number(page));curEdit->setReadOnly(true);curEdit->setFixedWidth(40);QLabel *totalLabel = new QLabel(QStringLiteral("总页数:"));QLineEdit *totalEdit = new QLineEdit(QString::number(page));totalEdit->setReadOnly(true);totalEdit->setFixedWidth(40);QHBoxLayout *smallLayouth = new QHBoxLayout;smallLayouth->addWidget(curLabel);smallLayouth->addWidget(curEdit);smallLayouth->addWidget(totalLabel);smallLayouth->addWidget(totalEdit);smallLayouth->addStretch();vLayout->addLayout(smallLayouth);//设置控件样式QString strLabelStyle = "QLabel{font-size: 17px;font-family: Microsoft YaHei;color: #FFFFFF;}";curLabel->setStyleSheet(strLabelStyle);totalLabel->setStyleSheet(strLabelStyle);QString strEditStyle =  "QLineEdit{font-size: 17px;font-family: Microsoft YaHei;color: #FFFFFF;""border: 1px solid #01B5EF;border-radius: 2px;background: rgba(8, 7, 91, 0.08);}";curEdit->setStyleSheet(strEditStyle);totalEdit->setStyleSheet(strEditStyle);QList<QHBoxLayout*> hlayoutList;for (int i = 0 ; i < 3 ; ++i) {QLabel * inputLabel = new QLabel(QStringLiteral("幼儿园:"));QLineEdit *inputEdit = new QLineEdit(QStringLiteral("小孩子"));inputEdit->setReadOnly(true);inputEdit->setFixedWidth(150);QLabel *onlineLabel = new QLabel(QStringLiteral("是小孩子:"));QString boolStr = "true";QLineEdit *onlineEdit = new QLineEdit(boolStr);onlineEdit->setReadOnly(true);onlineEdit->setFixedWidth(80);QLabel *stateLabel = new QLabel(QStringLiteral("能独立:"));boolStr = "false";QLineEdit *stateEdit = new QLineEdit(boolStr);stateEdit->setReadOnly(true);stateEdit->setFixedWidth(80);QLabel *modeLabel = new QLabel(QStringLiteral("可爱不:"));QLineEdit *modeEdit = new QLineEdit(QStringLiteral("可爱"));modeEdit->setReadOnly(true);modeEdit->setFixedWidth(180);QLabel *nameLabel = new QLabel(QStringLiteral("天才:"));QLineEdit *nameEdit = new QLineEdit(QStringLiteral("天才"));nameEdit->setReadOnly(true);nameEdit->setFixedWidth(200);QLabel *tempretrueLabel = new QLabel(QStringLiteral("温度:"));qreal tempretrue = 12.12;QLineEdit *tempretrueEdit = new QLineEdit(QString::number(tempretrue));tempretrueEdit->setReadOnly(true);tempretrueEdit->setFixedWidth(50);inputLabel->setStyleSheet(strLabelStyle);onlineLabel->setStyleSheet(strLabelStyle);stateLabel->setStyleSheet(strLabelStyle);modeLabel->setStyleSheet(strLabelStyle);nameLabel->setStyleSheet(strLabelStyle);tempretrueLabel->setStyleSheet(strLabelStyle);inputEdit->setStyleSheet(strEditStyle);onlineEdit->setStyleSheet(strEditStyle);stateEdit->setStyleSheet(strEditStyle);modeEdit->setStyleSheet(strEditStyle);nameEdit->setStyleSheet(strEditStyle);tempretrueEdit->setStyleSheet(strEditStyle);QHBoxLayout *hLayout = new QHBoxLayout;hLayout->addWidget(inputLabel);hLayout->addWidget(inputEdit);hLayout->addWidget(onlineLabel);hLayout->addWidget(onlineEdit);hLayout->addWidget(stateLabel);hLayout->addWidget(stateEdit);hLayout->addWidget(modeLabel);hLayout->addWidget(modeEdit);hLayout->addWidget(nameLabel);hLayout->addWidget(nameEdit);hLayout->addWidget(tempretrueLabel);hLayout->addWidget(tempretrueEdit);vLayout->addLayout(hLayout);}adjustScrollWidgetHeight(3,ui->scrollAreaWidgetContents);
}void StatusViewDialog::initSeatsView()
{deleteSeatsOrignalLayoutCtrls();int row = 0;QWidget *widget = ui->scrollAreaWidgetContents_2;QVBoxLayout *vlayout = new QVBoxLayout(widget);vlayout->setSpacing(5);vlayout->setContentsMargins(5,5,5,5);QList<QHBoxLayout*> everyHlayoutList;for (int i = 0 ; i < 4 ; ++i) {QLabel *curLabel = new QLabel(QStringLiteral("当前页:"));int page = 11;QLineEdit *curEdit = new QLineEdit(QString::number(page));curEdit->setReadOnly(true);curEdit->setFixedWidth(40);QLabel *totalLabel = new QLabel(QStringLiteral("总页数:"));QLineEdit *totalEdit = new QLineEdit(QString::number(page));totalEdit->setReadOnly(true);totalEdit->setFixedWidth(40);QLabel *unidNameLabel = new QLabel(QStringLiteral("名称:"));QLineEdit *unidNameEdit = new QLineEdit(QStringLiteral("席位"));unidNameEdit->setReadOnly(true);unidNameEdit->setFixedWidth(130);QLabel *unisIdLabel = new QLabel(QStringLiteral("大小:"));QLineEdit *unisIdEdit = new QLineEdit(QStringLiteral("23"));unisIdEdit->setReadOnly(true);unisIdEdit->setFixedWidth(300);QLabel *userNameLabel = new QLabel(QStringLiteral("用户名:"));QLineEdit *userNameEdit = new QLineEdit(QStringLiteral("深度"));userNameEdit->setReadOnly(true);userNameEdit->setFixedWidth(150);QString strLabelStyle = "QLabel{font-size: 17px;font-family: Microsoft YaHei;color: #FFFFFF;}";QString strEditStyle =  "QLineEdit{font-size: 17px;font-family: Microsoft YaHei;color: #FFFFFF;""border: 1px solid #01B5EF;border-radius: 2px;background: rgba(8, 7, 91, 0.08);}";curLabel->setStyleSheet(strLabelStyle);totalLabel->setStyleSheet(strLabelStyle);unidNameLabel->setStyleSheet(strLabelStyle);unisIdLabel->setStyleSheet(strLabelStyle);userNameLabel->setStyleSheet(strLabelStyle);curEdit->setStyleSheet(strEditStyle);totalEdit->setStyleSheet(strEditStyle);unidNameEdit->setStyleSheet(strEditStyle);unisIdEdit->setStyleSheet(strEditStyle);userNameEdit->setStyleSheet(strEditStyle);QHBoxLayout *hlayout1 = new QHBoxLayout;hlayout1->addWidget(curLabel);hlayout1->addWidget(curEdit);hlayout1->addWidget(totalLabel);hlayout1->addWidget(totalEdit);hlayout1->addWidget(unidNameLabel);hlayout1->addWidget(unidNameEdit);hlayout1->addWidget(unisIdLabel);hlayout1->addWidget(unisIdEdit);hlayout1->addWidget(userNameLabel);hlayout1->addWidget(userNameEdit);everyHlayoutList.append(hlayout1);++row;QString strGroupStyle = "QGroupBox{border: 1px solid #01B5EF;border-radius:2px;margin-top: 0.5px;}""QGroupBox::title{subcontrol-origin: margin;subcontrol-position: top left;""left: 10px;margin-left: 2px;padding: 0  0px;}";QGroupBox *groupBox = new QGroupBox;groupBox->setStyleSheet(strGroupStyle);QList<QHBoxLayout*> hlayoutList;for (int j = 0 ; j < 3; ++j) {QHBoxLayout *layoutStatus = new QHBoxLayout;hlayoutList.append(layoutStatus);QLabel *ipLabel = new QLabel(QStringLiteral("IP:"));QLineEdit *ipEdit = new QLineEdit(QStringLiteral("129.128.0.1"));ipEdit->setReadOnly(true);QLabel *tempretureLabel = new QLabel(QStringLiteral("温度:"));QLineEdit *tempretureEdit = new QLineEdit(QStringLiteral("24"));tempretureEdit->setReadOnly(true);QLabel *onlineLabel = new QLabel(QStringLiteral("是否在线:"));QString temp = "true";QLineEdit *onlineEdit = new QLineEdit(temp);onlineEdit->setReadOnly(true);ipLabel->setStyleSheet(strLabelStyle);tempretureLabel->setStyleSheet(strLabelStyle);onlineLabel->setStyleSheet(strLabelStyle);ipEdit->setStyleSheet(strEditStyle);tempretureEdit->setStyleSheet(strEditStyle);onlineEdit->setStyleSheet(strEditStyle);layoutStatus->addWidget(ipLabel);layoutStatus->addWidget(ipEdit);layoutStatus->addWidget(tempretureLabel);layoutStatus->addWidget(tempretureEdit);layoutStatus->addWidget(onlineLabel);layoutStatus->addWidget(onlineEdit);row++;}QVBoxLayout *vGroupboxLayout = new QVBoxLayout(groupBox);for (int i = 0 ; i < hlayoutList.size() ; ++i) {vGroupboxLayout->addLayout(hlayoutList[i]);}QHBoxLayout *hGroupLayout = new QHBoxLayout;hGroupLayout->addWidget(groupBox);everyHlayoutList.append(hGroupLayout);}for (int j = 0 ; j < everyHlayoutList.size() ; ++j) {vlayout->addLayout(everyHlayoutList[j]);}adjustScrollWidgetHeight(row,ui->scrollAreaWidgetContents_2);
}void StatusViewDialog::deleteSourcesOrignalLayoutCtrls()
{if (ui->scrollAreaWidgetContents->layout() != nullptr) {QLayout *oldLayout = ui->scrollAreaWidgetContents->layout();delete oldLayout;}QList<QWidget*> widgetList = ui->scrollAreaWidgetContents->findChildren<QWidget*>();foreach (QWidget* ctrl, widgetList) {delete ctrl;}
}void StatusViewDialog::deleteSeatsOrignalLayoutCtrls()
{if (ui->scrollAreaWidgetContents_2->layout() != nullptr) {delete ui->scrollAreaWidgetContents_2->layout();}//现删除groupbox,然后删除窗口上剩余的控件QList<QGroupBox*> groupBox = ui->scrollAreaWidgetContents_2->findChildren<QGroupBox*>();foreach (QGroupBox *gb, groupBox) {delete gb;}//删除其它的标签和行编辑器QList<QWidget*> widgetList = ui->scrollAreaWidgetContents_2->findChildren<QWidget*>();foreach (QWidget* ctrl, widgetList) {delete ctrl;}
}void StatusViewDialog::adjustScrollWidgetSize(QWidget *widget,QWidget *changedWidget)
{QGridLayout *gridLayout = new QGridLayout(widget);//使tab页中的窗口和tab页一样大gridLayout->setContentsMargins(0,0,0,0);gridLayout->addWidget(changedWidget,0,0,1,1);
}void StatusViewDialog::adjustScrollWidgetHeight(int num,QWidget *widget)
{int height = (num + 1) * 35;//平均每行的高度为35widget->setFixedHeight(height);
}

这里是tabwidget控件中创建控件并布局,先删除之前的控件和布局,然后重新创建控件并布局。这里删除的时候先获取之前的布局,然后删除布局,再删除控件,控件删除时是按照类型来删除的,主要由其父窗口来看类型,找到某一类的控件,然后返回对应的列表,然后删除,另外创建控件后根据控件的数量调整布局所在窗口的大小。

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

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

相关文章

Spring精华问答 | Spring 能帮我们做什么?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q&#xff1a;什么是Spring框架&#xff1f;A&#xff1a;Spring框架是一个为Java应用程序的开发提供了综合、广泛的…

linux 上传文件 rz命令 提示command not found 解决方法

-bash: rz: command not found rz命令没找到&#xff1f; 执行sz&#xff0c;同样也没找到。 安装lrzsz&#xff1a; yum -y install lrzsz现在就可以正常使用rz、sz命令上传、下载数据了。 使用方法&#xff1a; 上传文件 rz filename下载文件 sz filename

IoT与大数据 如何激发数字营销最大潜能?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;译者&#xff1a;风车云马 物联网与大数据概述物联网(IOT)简单理解&#xff0c;除了电…

qt中生成含有中文的json文件,读取含有中文的json文件

引言 之前将变量保存并在本地生成json文件&#xff0c;由于其中含有中文&#xff0c;导致生成的json文件出现乱码&#xff0c;或者就是生成的json文件没有乱码&#xff0c;但是读取生成的json文件时出现乱码&#xff0c;不能正常解析json. 示例 运行效果&#xff1a; 下面是…

年初新立Flag,新华三解决方案部做了点儿啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;人人都提及的数字化时代&#xff0c;企业不想方设法提升效率怎么行&#xff1f…

idea gblfy常用快捷键

gblfy日常快捷键&#xff1a; 关键词说明idea中对应的操作CTRL左方向光标向左跳跃一个单词Editor Actions -> Move Caret to Previous WordCTRL右方向光标向右跳跃一个单词Editor Actions -> Move Caret to Next Wordmianmian方法输入main后按着(自动提示)alt/sout快速打…

看华为生态大学 如何玩转人才生态?

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;从孔子兴私学开始&#xff0c;千百年来&#xff0c;中国人在私塾中开始或完成自…

Hadoop精华问答 | 关于Hadoop核心技术的精华问答

戳蓝字“CSDN云计算”关注我们哦&#xff01;随着科技时代的发展&#xff0c;大数据与云计算已势不可挡的架势席卷未来&#xff0c;不可否认&#xff0c;大数据时代已经来临&#xff0c;并将深刻地改变着我们的工作和生活。学习大数据技术&#xff0c;是时代的召唤&#xff0c;…

如何将本地代码推送至远程仓库

文章目录一、现在远程仓库创建仓库二、本地操作流程1. 用idea打开项目2. 选择需要打开项目3. 选择这个窗口打开或者用一个新的窗口打开都可以4. 导入成功的项目结构三、将本地仓库的代码推送远程仓库1. 初始化本地git仓库2. 将项目代码提交到暂存区3. 将暂存区的代码提交到本地…

Open Infrastructure Summit 2019,炼就成功开源范示;阿里云居亚太市场第一;高通将获45亿美元和解金...

戳蓝字“CSDN云计算”关注我们哦&#xff01;重磅先知 Open Infrastructure Summit 2019,炼就成功开源范示云计算市场烽烟再起&#xff1a;阿里云位居亚太市场第一高通将从苹果公司获得至少45亿美元和解金重磅快报Open Infrastructure Summit 2019,炼就成功开源范示“开源不是…

以人为本、用“简”驭“繁”……统统都是新华三物联网的关键词儿!

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;初见2019 Navigate领航者峰会的展区&#xff0c;就被这个接地气的大屏幕吸引了…

我们应聘BAT等互联网公司,关于Spring到底需要掌握什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;阅读本文大概需要 3 分钟。之前分享过一些BAT面试必会的文章&#xff0c;一些读者看了…

java.lang.reflect.InvocationTargetException 的惨痛教训

记录发布webservice漏发内部类文件导致异常java.lang.reflect.InvocationTargetException 的惨痛教训 我的一个实现类中调用了一个内部类&#xff0c;在本地测试正常&#xff0c;发布服务期之后&#xff0c;soapUI共测试报 java.lang.reflect.InvocationTargetException &…

qt下实现文件的拖拽打开

引言 此文用于记录按下鼠标左键不放&#xff0c;拖动文件到程序中打开。该示例中只设置了可以拖动的文件类型为.h,.cpp,.txt这三种文件类型。 程序运行的效果&#xff1a; 示例 下面是具体的实现。 项目的结构&#xff1a; 具体的实现代码&#xff0c;如下&#xff1a; mai…

qt中使用QCompleter实现查找功能

引言 本文有两个例子&#xff0c;示例一中通过在combox中输入文本可以实现自动补全&#xff0c;用户根据提示列表&#xff0c;选中某一个信息&#xff0c;作为要搜索的字符串。示例二中用户输入要搜索的文本在行编辑器中&#xff0c;当输入的文本在搜索的字符串列表中时&#…

动图:程序员才懂的这些!

戳蓝字“CSDN云计算”关注我们哦&#xff01;1. Java VS C2. 功能先上了再说3.高级开发人员作为一个团队进行编程4. 调试CSS5. 编译错误&#xff1a;括号不匹配6.高级开发人员重构代码7. 看实习生编码的时候&#xff0c;我的表情...8.当我尝试进入BIOS9. 虽然很多Bug&#xff0…

表达祝福与喜悦的数字资产——平安夜的特别礼物华为云DAC

平安夜的街灯光闪烁&#xff0c;人们沉浸在节日气氛中&#xff0c;忙着购买礼物&#xff0c;准备晚餐&#xff0c;相互传递感恩与祝愿。华为云DAC数字资产创意平台锁住美好&#xff0c;用数字艺术的形式制作专属节日记忆&#xff0c;有创意的礼物总让人难忘。 独一无二的礼物—…

qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库

提要 此文分别就qt生成纯代码的动态库&#xff0c;含有ui文件的动态库以及含有资源文件qss文件和切图的动态库。 实现 1.纯代码的生成qt库。即没有ui文件的项目。 打开QtCreate&#xff0c;新建文件&#xff0c;选择library. 接下来填写项目的名称&#xff0c;选择生成的路…

太形象了!什么是边缘计算?最有趣的解释没有之一!

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;云计算就像是天上的云&#xff0c;看得见摸不着&#xff0c;像章鱼的大脑&#xff0c;…

qt中使窗口的大小随窗口的内容大小进行调整

提要 窗口用于显示文本信息&#xff0c;当窗口的文本信息变长&#xff0c;原有窗口的大小不足以显示文本信息。这时就需要一个能够根据窗口要显示的文本信息的长度来调整窗口大小的窗口。 示例 效果图&#xff1a; 窗口内容少的时候提示窗口大小&#xff0c;当窗口要显示的…