源文件

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

#include<QDebug>


MainWindow::MainWindow(QWidget*parent):

{

ui->setupUi(this);

layout=newQVBoxLayout;

containWidget=newQWidget;

for(inti=0;i<1;++i)

{

QLabel*label=newQLabel();

QPixmappixmap;

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()

{

deleteui;

}


voidMainWindow::addWidget()

{

for(inti=0;i<1;++i)

{

QLabel*label=newQLabel();

QPixmappixmap;

pixmap.load(":/timg.jpg");

label->setPixmap(pixmap);

layout->addWidget(label);

}

}


voidMainWindow::delWidget()

{

/*//单次删除控件

QLabel*fm=ui->scrollArea->findChild<QLabel*>();//找到指定名称的控件

layout->removeWidget(fm);

fm->deleteLater();

*/

//删除所有Label子控件

QList<QLabel*>labelList=ui->scrollArea->findChildren<QLabel*>();

for(inti=0;i<labelList.length();++i)

{

QLabel*fm=labelList.at(i);

layout->removeWidget(fm);

fm->deleteLater();

}


}


头文件

#include<QMainWindow>

#include<qlayout.h>

#include<qlabel>

#include<QBuffer>


namespaceUi{

classMainWindow;

}


classMainWindow:publicQMainWindow

{

Q_OBJECT


public:

explicitMainWindow(QWidget*parent=0);

~MainWindow();

privateslots:

voidaddWidget();

voiddelWidget();

private:

Ui::MainWindow*ui;

QVBoxLayout*layout;

QWidget*containWidget;

};