Qt 5 QFormLayout 隐藏一行 或 重新布局
Qt 5 QFormLayout 隐藏一行 或 重新布局 通过takeRow删除指定行,且不删除对应的label和field的QWidget,这些QWidget由自己管理。
初始化QFormLayout ,并保存lb1,le1,lb2,le2
lb1 = new QLabel("11111");
le1= new QLineEdit(ui->centralwidget);
ui->formLayout->addRow(lb1 ,le1);
lb2 = new QLabel("22222");
le2= new QLineEdit(ui->centralwidget);
ui->formLayout->addRow(lb2 ,le2);
在需要更新布局时,先takeRow,然释放labelItem和fieldItem的内存,并且需要隐藏lb和le。
for(int i=ui->formLayout->rowCount()-1;i>=0;--i) { QFormLayout::TakeRowResult result = ui->formLayout->takeRow(i); QWidget* lb = result.labelItem->widget(); QWidget* le = result.fieldItem->widget(); lb->hide(); le->hide(); delete result.labelItem; delete result.fieldItem; }
然后重新addRow指定行,在加入前重新显示lb和le
lb2->show(); le2->show(); ui->formLayout->addRow(lb2,le2);

浙公网安备 33010602011771号