算解决了  这样弄大概也满足需求 就是不知道还有没有更好的方法
 
if(clickflag==0){
        dock = new QDockWidget(tr("test"), this);
        dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
        dock->setWidget(ui->tab);
        dock->setFloating(true);
        dock->show();
        clickflag++;
    }else {
        ui->testTab->insertTab(0,ui->tab,"test");
        //dock->hide();
        delete dock;
        dock=nullptr;
       clickflag=0;
 
    }