删除一个控件 布局间距变大了
优化后
//删除按钮 更新布局
void ScreenInfoArea::deleteBtn()
{
int count = m_screenInfoVec.size();
ScreenInfoBtn *selectedButton = nullptr;
for (int i = count-1; i > 0; i--) {
selectedButton = m_screenInfoVec[i];
if(selectedButton && selectedButton->getChecked()){
m_screenInfoVec.remove(i);
if (m_screenLayout) {
m_screenLayout->removeWidget(selectedButton);
m_screenLayout->update();
}
delete selectedButton;
selectedButton = Q_NULLPTR;
}
}
count = m_screenInfoVec.size();
updateLayout();
}
void ScreenInfoArea::updateLayout() {
int count = m_screenInfoVec.size();
int row = (count-1) / m_colNum;
int col = (count-1)% m_colNum;
int height = (row + 1) * 300 + (row + 2) * 32;
int width = (col+1) * 226 + (col + 2) * 32;
if (row > 0)
width = this->width();
m_screenWidget->setFixedSize(width, height);
m_colNum = 10;
}
//添加按钮 更新布局
void ScreenInfoArea::updatePicAndAvi(int type, QString filePath)
{
int count = m_screenInfoVec.size();
int row = count / m_colNum;
int col = count % m_colNum;
//获取按钮类型
ScreenType screentype;
if (type == 0) {
screentype = ScreenType::picture;
}
else {
screentype = ScreenType::video;
}
ScreenInfoBtn *screenButton = new ScreenInfoBtn(screentype);
//设置数据
screenButton->setBackPix(filePath);
m_screenInfoVec.push_back(screenButton);
m_screenLayout->addWidget(screenButton,row,col,1,1,Qt::AlignLeft);
m_screenWidget->setStyleSheet("background:#ffEBEB");
//m_screenWidget->setStyleSheet("background:transparent;");
int height = (row + 1) * 300 + (row +2)* 32;
int width = (col + 1) * 226 + (col + 2) * 32;
if (row > 0)
width = this->width();
m_screenWidget->setFixedSize(width, height);
m_screenWidget->setLayout(m_screenLayout);
}