当前位置: 代码迷 >> QT开发 >> 如何把加入到widget的label删掉
  详细解决方案

如何把加入到widget的label删掉

热度:42   发布时间:2016-04-25 04:31:25.0
怎么把加入到widget的label删掉

如题,代码中我在一个widget里加入了数个label

在槽函数触发后要刷新界面 ,需要删除前面的label,再重新加入 




for(int i=0;i<input_num;i++)
  {
  int pos_x = view_x_pos+i_width*(i%side_num);
  int pos_y = view_y_pos+i_height*(i/side_num);
  QLabel *label = new QLabel(ui->p_widget);
  label->setText(QString::number(i));
  label->setGeometry(QRect(pos_x,pos_y,i_width,i_height));
  label->show();
  }


该如何实现?谢谢

------解决方案--------------------
C/C++ code
delete[]
------解决方案--------------------
你可以用个数组定义个成员变量,类似下面这样:
QVector<QLabel*> m_vecLabels;

for(int i=0;i<input_num;i++)
{
int pos_x = view_x_pos+i_width*(i%side_num);
int pos_y = view_y_pos+i_height*(i/side_num);
QLabel *label = new QLabel(ui->p_widget);
m_vecLabels.pushback(label);

label->setText(QString::number(i));
label->setGeometry(QRect(pos_x,pos_y,i_width,i_height));
label->show();
}

新建的label全部加入到这个vector中,
需要删除的时候,遍历删除,在重新加入
------解决方案--------------------
你是怎么删除的呢:
delete label;
label = NULL;

你可以试一下,只加一个label然后删除掉.

是不是界面需要刷新一下
------解决方案--------------------
暂时性的设置透明如何
------解决方案--------------------
直接delete掉就可以
------解决方案--------------------
或者在delete之前将label->hide()
  相关解决方案