2 pingshanjushi PingShanJuShi 于 2015.06.24 14:16 提问

qt中删除布局内的子控件 1C

开发环境为win7旗舰版,qt creator3.4-msvc,qt库为5.4版本的,现在在一个界面中添加了一个垂直布局,布局内有QLabel标签,因为标签数目不确定,所以用了QList来管理,可以随意增减。那么希望在更新标签时将原有标签中除了前6个外先全部彻底删除,但是我用了很多方法都没有达到效果,原有标签还是会显示


    QLayoutItem *child = this->layout()->takeAt(6);
    for(int count = 0;count < statlistContent.count();++count)
    {
        vlayout->removeWidget(statlistContent.at(count));
        //vlayout->removeItem(child);

        //child = this->layout()->takeAt(6);
        vlayout->removeItem(child);
        //delete child;
        statlistContent.at(count)->deleteLater();
        statlistContent.at(count)->hide();
    }
    qDeleteAll(statlistContent);
    statlistContent.clear();

用到delete还会导致程序崩溃,希望有经验的大神指导

1个回答

qq_29192379
qq_29192379   2015.06.24 15:49
    vlayout->removeWidget(statlistContent.at(count));
    //vlayout->removeItem(child);

    //child = this->layout()->takeAt(6);
    vlayout->removeItem(child);
    //delete child;
    statlistContent.at(count)->deleteLater();
    statlistContent.at(count)->hide();
}
qDeleteAll(statlistContent);
PingShanJuShi
PingShanJuShi 此方法不行
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片