qt qtablewidget setcellwidget后触发cellclicked信号,原表格中的widget不显示

初学qt,Qt QTableWidget cellwidget中插入了图表后,触发cellclicked,原图中的widget不显示

QDialog *dlg=new QDialog;
QVBoxLayout *dlg_layout=new QVBoxLayout ;
QWidget *w=new QWidget;
QWidget *old_w=new QWidget;
QPushButton *btn_save_pic=new QPushButton;
connect(ui->chart1,&QTableWidget::cellClicked,this,&MainWindow::show_dialog);
void MainWindow::show_dialog(int row, int column)
{
    QTableWidget* tabvgt=qobject_cast(sender());
    qDebug()<cellWidget(row,column);
    if(w!=old_w)
    {
        if(layout_cnt!=0)
        {
            dlg_layout->replaceWidget(old_w,w);
        }
        else
        {
            dlg_layout->addWidget(btn_save_pic,1);
            dlg_layout->addWidget(w,1);
            dlg->setLayout(dlg_layout);
        }
    }
    qDebug()<<QString("layout_cnt=%1").arg(layout_cnt);
    layout_cnt++;
    old_w=w;
    dlg->show();
}

运行结果及报错内容

img

点击tablewidget的cell以后原来插入的widget就没了

img


你这句话将布局改变了。所以当你点击的时候就会消失,你做的操作都是改变原有布局了