我有
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() )
?我不这么认为,因为我正在使用指针......我不明白......