删除QWidget中的所有布局和组件

【QT】在布局中增加addWidget和清除removeWidget控件 1.在布局中增加控件: ui->verticalLayout->addWidget(chartView); 2.在布局中清除控件: // 删除布局中所有的控件 while(ui->verticalLayout->count()) { QWidget *p=this->ui->verticalLayout->itemAt(0)->widget(); p->setParent (NULL); this->ui->v 阅读详情

技术要点:

1、调用QWidget::layout()可获取组件的布局;

2、QLayout::count() 可获取布局内的子项数量,包括子布局和子组件;

3、QLayout::itemAt(int index) 可根据索引获取相应的子项;

4、QLayout::removeWidget(QWidget *widget) 可将某个组件从布局中移除。

有了上述方法,就可以实现删除QWidget中的所有布局和组件的功能了,该方法也适用于QMainWindow和QDialog,代码如下:

#include <QWidget>
#include <QLayout>
 
// 清除组件内的所有元素
void removeAllWidget(QWidget *wgt)
{
    if (wgt) {
        QLayout *lay = wgt->layout();
        if (lay) {
            removeAllWidget(lay);
        }
        
        // 如果需要删除组件本身,则调用以下代码
        wgt->deleteLater();
        wgt = nullptr;
    }
}
 
// 清除布局内的所有元素
void removeAllWidget(QLayout *lay)
{
    if(nullptr == lay) // 窗体没有布局器,直接删除所有子窗体部件
    {
         auto lstSubWidget = findChildren<QWidget*>();
         for(auto subWidget : lstSubWidget )
         {
              removeAllWidget(subWidget);
              // 或者下面这样也行:
              /*
               subWidget->setParent(nullptr);
               subWidget->deleteLater();
               subWidget = nullptr;
               */
         }         
    }
    else
    {
       
        while (lay->count() > 0) 
        {
            auto pLayoutItem = lay->itemAt(0); // 布局中的子项
            auto pSubLay = pLayoutItem->layout();
            if (subLay) // 布局中的子项是依然是布局器,则递归到不是布局器为止
            {
                removeAllWidget(subLay);    // 子布局递归调用
            }
            
            auto wgt = pLayoutItem->widget(); // 布局中的子项是依然是窗体部件
            if (wgt) 
            {
                lay->removeWidget(wgt);
                wgt->setParent(nullptr);
                wgt->deleteLater();
                wgt = nullptr;
            }
        } // end while
        
        lay->deleteLater();
        lay = nullptr;
    }
}


                        
原文链接:https://blog.youkuaiyun.com/ouyangxiaozi/article/details/134106609

PyQt5入门——删除、清空layout布局中的所有对象(含常见问题详解) 文章目录问题描述清空layout中的所有对象 问题描述 有一种需求是动态创建layout中的内容,这时就需要先删除之前在layout中添加过的对象。 在网上查资料1看到用layout.itemAt(i).widget().deleteLater()来删除layout中的控件,但是这里需要注意几个问题: QLayout的操作都是通过QLayoutItem来实现的,QLayoutItem可能包含widget(如QWidgetItem),也可能不包含widget(如QLayout、QSpacerItem)2,所 阅读详情

相关推荐

qt之关于清空布局中的所有控件中的一种方式

【代码】qt之关于清空布局中的所有控件中的一种方式。

我不是码农的博客~~~ 541

QLayout 删除所有元素

QLayout 删除所有元素

flutter_learner的博客 1745

【EtherCAT实践篇一】TwinCAT 3安装、使用

FULL(XAE)安装包:包含了XAR的功能,并能进行多种语言的编程和硬件组态,通常安装在编程电脑上;XAR安装包:包含了ADS的功能,是实时运行环境,对 TwinCAT 模块进行加载、执行、管理、实时运行与调用,通常安装在PLC中;RM安装包:在装了高版本的TwinCAT 3后,发现PLC中的TwinCAT版本较低,就需要安装相应低版本的RM安装包切换版本使用(注:4024无法使用RM安装包切换到低于4022的版本,如4020/4018/4016版本。

JXES智能生态系统 5124

removeWidget不起作用的解决方法

今天在写一个界面操作时,如下: objList = ui->widget1->children(); for(int i=0; i<objList.length(); i++) { if(objList.at(i)->inherits("Group")) { Group *tmp = qobject_cast<Group *>(objList.at(i)); ui->

如山石的系统虚拟化之路 2931

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

【Java完整版 面试必备】Leetcode Top100题目和答案-滑动窗口篇

【Java完整版 面试必备】Leetcode Top100题目和答案-滑动窗口篇

weixin_43298211的博客 2245

Qt:删除QWidget中的所有布局和组件

3、QLayout::itemAt(int index) 可根据索引获取相应的子项;2、QLayout::count() 可获取布局内的子项数量,包括子布局和子组件;1、调用QWidget::layout()可获取组件的布局;*widget) 可将某个组件从布局中移除。

宏笋的博客 4732

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1018

Pyqt5从布局中删除QFrame,QWidget

这里实现的是在垂直、水平、瀑布流、网格布局中删除QFrame和QWidget这些基类中,使用删除普通组件的方法行不通。我使用的是qfluentwidgets,基于pyqt开发的美化组件库。如何你想删除QLabel可以看一下下面这个博主。self.layout 改为自己的父类。后面代码看不懂不用怕,看最后面!QFrame 改为自己的组件类型。

专注分享 Python 爬虫核心技术、实战技巧与避坑指南。深耕 Hamibot 等工具,解锁安卓自动化与移动端数据采集的奥秘。从基础请求到反爬对抗,从数据清洗到效率提升,用代码探索网络数据的无限可能。在这里,拆解复杂逻辑,提炼实用方案。 692

YOLO26改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。YOLO26主要用于轻量化应用部署,相关轻量化改进与其整体架构非常适配。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1091

AI自瞄原理剖析(一)屏幕内容循环截取及代码实现

尽管Yolo框架在推理时其实是可以输入不同大小的图片的,但这些作者大多不会去处理图像尺寸的改变,所以目前大部分开源源码主要是以输入320或者640尺寸的图像为主。只要截图的效率足够快,能够满足一秒采集60张图片,也就是稳定的截图速度达到60帧以上,那么就可以实现内存级别的AI锁死自瞄效果。这里强调了截图速度对于最终实现特定自瞄效果的重要性,只有达到这样的速度标准,才能让整个自瞄相关的功能在内存层面有效地运作起来。在实现自瞄功能的情境下,只需要以游戏准星为中心向外的正方形区域图像就够了,没必要进行全屏截取。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1096

PyQt5待办应用函数速查手册

python# 定义信号my_signal = pyqtSignal(str) # 带字符串参数my_signal = pyqtSignal(int, bool) # 带多个参数my_signal = pyqtSignal() # 无参数# 发射信号self.my_signal.emit(数据)# 连接信号对象.信号.connect(槽函数)

qq_62730096的博客 355

安卓中蓝牙免提HFP的一些分析

最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先...

底层码农 771

Qt动态增加和动态删除QWidget内控件(有布局和没有布局都有效)(qDeleteAll、delete、deleteLater、findChildren)

在QWidget界面中,不管是否采用了布局,只要是QWidget的子类,则可以用findchild()函数查找所有子类,然后通过指定函数进行删除。下面是博主总结的两种动态删除dget内控件的方法。 一、通过函数qDeleteAll()删除 其中,该函数原型有两个,分别如下: //第一个原型 template <typename ForwardIterator> Q_OUTOFL...

净无邪博客 1万+

HTML流光爱心(完整代码)

HTML语言实现红蓝色流光爱心效果的完整代码。

AIGC 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

删除 QWidget 的所有布局和控件

在这个例子中,widget 的所有控件和布局都会被删除。请注意,deleteLater() 函数会在事件循环的下一次迭代时删除控件,这样可以防止在控件还在被使用时就被删除。1.获取 QWidget 的布局。2.删除布局中的所有控件。

weixin_45483780的博客 2563

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

QT 的stackedWidget 如何删除页

weixin_48473914的博客 591

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

如何清理QWidget布局,但不删除里面布局元素,然后将这些元素重新布局

在这个示例代码中,myWidget 是一个 QWidget 指针,您需要根据您的实际情况将其替换为您需要的 QWidget 对象。在删除旧布局和创建新布局之间,您需要将 QWidget 中的所有元素添加到新布局中。在重新设置新布局之后,您需要调用 QWidget 的 activate() 函数来重新布局。2、创建一个新的布局,并将 QWidget 中的所有元素添加到其中。1、获取 QWidget 的布局指针,并删除它。3、将新布局设置为 QWidget 的布局。

weixin_39252106的博客 1920

QSplitterWidget多窗口自动排列

QQ:609162385 #ifndef QSPLITTERWIDGET_H #define QSPLITTERWIDGET_H #include &lt;QWidget&gt; #include &lt;QList&gt; #include &lt;QWidget&gt; class QSplitterWidget : public QWidget { Q_OBJECT publi...

cqltbe131421的博客 320

删除QWidget中的控件和清空QTableView表格内容用法

本文主要总结删除QWidget中的控件和清空QTableView表格内容用法,下面将详细讲述这两种用法的实现方式。1.1删除QWidget中的控件(函数removeWidget())要删除QWidget中的控件,可以现在QWidget用QVBoxLayout布局,然后用QVBoxLayout::removeWidget(QWidget*)函数删除指定名称的控件,删除后要用delete释放空间,否则...

净无邪博客 1万+

Qt中的常用组件:QWidget篇

QPixmap用于展示图像,QCursor可以设置光标效果,比如我们可以先用图像文件构建QPixmap对象,需要的话可以使用scaled调整大小,再通过这个QPixmap构造QCursor,将其设置进我们所需要的小组件,比如QPushButton,同时如果需要的话,可以构建一个热点(即实际点击的位置),就能够实现将光标放在某个组件上时将光标替换为我们所需要的光标图像的效果。提供给用户一个日历(精确到年月日),能够让用户选择日期,并通过selectionChanged信号来获取用户选择的日期。

wangjialelele的博客 1063

python widget_python – 用另一个布局替换QWidget上的布局

我有一个小部件,当切换选项时,它会发生变化.这会使所有布局和小部件无效.我保留所有布局的列表,所以我可以使用类似于this answer的东西删除它们:class MyWidget(QFrame):# ...def reLayout(self):def deleteLayoutChilds(l):while l.count():item=l.takeAt(0)widget=item.widget(...

weixin_34277051的博客 643

Qt学习笔记,QWidget和QMainWindow新认识

Qt学习笔记,QWidget和QMainWindow新认识 学习Qt这么久了,今天才发现,原来QWidget不是我想象的那种东西。居然给她设置背景是那么的不方便的。在这里得到的方式如下: //在Qt3中,使用QWidget::setBackgroundPixm

Qicz的学习笔记 博客新址:izcqi.com 5748

QWidget替换布局文件

一、 正常使用布局文件 ui->setupUi(basewin); 这时候如果再次对QWidget执行setupUi是没有效果的,需要先把原有的布局删除 二、删除Qwidget/QFrame所有控件和layout(布局) void BaseSettingUI::DelLayoutItem(QLayoutItem *layoutItem) { if (NULL==layoutItem) return ; if (layoutItem->layout()) {

GeiGe123的博客 1172

Qt从布局中删除部件和从QTabWidget中删除一个tab内存释放问题

从布局中删除一个部件: QLayoutItem *item = ui.horizontalLayout->layout()->takeAt(0); if (item != 0) { QWidget * pWidget = item->widget(); ui.horizontalLayout->layout()->removeW...

qq_40110291的博客 9083
上一篇: QToolButton的工具提示出现自身border-image背景图的问题解决
下一篇: C++实现更改8位无符号整形的第n比特位值为1或0
荆楚闲人
博客等级 码龄20年 3万+粉丝 473原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值