删除布局并重置另一个

时间:2016-05-19 14:22:19

标签: c++ qt user-interface qwidget qlayout

我有

QWidget *myWidget; //on my mainWindow with Qt Creator

QComboBox *myComboBox;

当我更改myComboBox的选择时,我想删除

myWidget->layout();

并将myWidget设置为另一种布局。

我正在做:(有了这个帮助:https://stackoverflow.com/a/12034868/6105710

void ConfWindow::on_comboBouton_currentIndexChanged(const QString &arg1)
{
    if(ui->myWidget->layout()){
        auto myLayout = ui->myWidget->layout();
        QLayoutItem *item;
        while((item = myLayout->takeAt(0)) != 0){
            myLayout->removeItem(item);
            delete item;
        }
        delete myLayout;
    }

    for(int i=0; i< someVector->size(); i++){
        if( someVector->at(i)->getName() == arg1){
            ui->myWidget->setLayout( someVector->at(i)->getLayout()); //which return a QHBoxLayout.
            break;
        }
    }
}

当我更改我的comboBox时,它正在绘制我的新布局,但我的旧布局仍然在这里.. 我尝试了repaint(),update()等......

是因为我在另一个类中创建布局并使用

添加它
auto myVector = new QVector<myClass>; 
setLayout( myVector->getLayout() ) 

?我不这么认为,因为我正在使用指针......我不明白......

0 个答案:

没有答案