QT动态添加删除控件

源文件

成都创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为金城江企业提供专业的网站设计制作、成都网站设计金城江网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 

MainWindow::MainWindow(QWidget *parent) :
{
    ui->setupUi(this);
    layout = new QVBoxLayout;
    containWidget = new QWidget;
    for (int i = 0; i < 1; ++i)
    {
            QLabel *label = new QLabel();
            QPixmap pixmap;
            pixmap.load(":/timg.jpg");
            label->setPixmap(pixmap);
            layout->addWidget(label);
    }

        containWidget->setLayout(layout);
        ui->scrollArea->setWidgetResizable(true);
        ui->scrollArea->setWidget(containWidget);
        //this->setCentralWidget(ui->scrollArea);

        connect(ui->AddBottun,SIGNAL(clicked(bool)),SLOT(addWidget()));
        connect(ui->DelButton,SIGNAL(clicked(bool)),SLOT(delWidget()));
 }

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::addWidget()
{
    for (int i = 0; i < 1; ++i)
    {
            QLabel *label = new QLabel();
            QPixmap pixmap;
            pixmap.load(":/timg.jpg");
            label->setPixmap(pixmap);
            layout->addWidget(label);
    }
}

void MainWindow::delWidget()
{
    /* //单次删除控件
    QLabel *fm = ui->scrollArea->findChild(); //找到指定名称的控件
    layout->removeWidget(fm);
    fm->deleteLater();
    */
    //删除所有Label 子控件
    QList labelList= ui->scrollArea->findChildren();
    for(int i=0;i
    {
        QLabel *fm =labelList.at(i);
        layout->removeWidget(fm);
        fm->deleteLater();
    }

}

头文件

#include 
#include
#include 
#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void addWidget();
    void delWidget();
private:
    Ui::MainWindow *ui;
     QVBoxLayout *layout;
     QWidget *containWidget;
};

标题名称:QT动态添加删除控件
URL标题:http://scyanting.com/article/jpggch.html