QT动态添加删除控件
源文件
#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;
};
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。