首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt里如何从layout里移除控件

2013-01-25 
Qt里怎么从layout里移除控件1个4x4的gridlayout 有16个窗体现在变为3x3 想先把里面的窗体都移除 然后再加

Qt里怎么从layout里移除控件
1个4x4的gridlayout 有16个窗体

现在变为3x3 想先把里面的窗体都移除 然后再加入9个

调用removeWidget方法似乎无效 求解应该如何从layout里移除widget?

right_above_layout->removeWidget(vec_VideoWidget[i]);
[解决办法]
直接把gridlayout delete掉试试
[解决办法]
我最近在公司做一个项目,刚好有这个需求,我贴出这部分代码,自己慢慢去研究吧。

void CentralWidget::setDrivePlateAddrAndElectronStorageCabinetCount(int drivePlateAddr, int electronStorageCabinetCount)
{
    int prevCount = info->getElectronStorageCabinetCount();

    for(int i = 0; i < prevCount; ++i)
    {
        delete labels[i];
        labels[i] = NULL;
    }

    labels.clear();

    for(int i = 0; i < electronStorageCabinetCount; ++i)
        labels.append(new Label(this));

    for(int i = 0; i < electronStorageCabinetCount; ++i)
    {
        int row = i / LINE_COUNT;
        int column = i % LINE_COUNT;
        gridLayout->addWidget(labels[i], row, column);
    }

    for(int i = 0; i < labels.count(); ++i)
    {
        connect(labels[i], SIGNAL(updateBoxDoorCheckState(int)), this, SLOT(updateBoxDoorCheckState(int)));
        connect(labels[i], SIGNAL(updateGoodsCheckState(int)), this, SLOT(updateGoodsCheckState(int)));
    }

    info->initInfo(drivePlateAddr, electronStorageCabinetCount);
}

[解决办法]
delete 控件名;


[解决办法]
也就是两步:
1:layout->removeWidget(widget);
2:widget->deleteLater();
很多个就要每个都做一遍。

热点排行