Ocultar uma guia anteriormente adicionada ao Qt TabWidget
Pergunta
Eu tenho uma caixa de diálogo que contém um TabWidget QT com várias guias adicionadas.
Eu gostaria de esconder uma das guias.
_mytab->hide()
não funciona. Não quero apenas excluir a guia e todos os seus widgets do arquivo .ui porque outro código depende dos widgets dentro da guia. No entanto, seria bom gerar o código da guia, mas de alguma forma não :: inserttab no uic_mydialog.cpp gerado. Definir a propriedade oculta no arquivo da interface do usuário também não funciona.
Estou usando o QT 3.3
Solução
Eu usaria Qtabdialog :: Remonepage (QWidget* ptabpage) que não exclui o PTABPAGE, que é o que você deseja.
_myTabDlg->removePage(_mytab);
Estou usando e funciona bem!
Outras dicas
Eu tinha encontrado o mesmo problema. Estou usando a seguinte abordagem.
Agora aqui estão os dados.
gentab é o nome do meu qtabwidget
Tabx é o nome da guia que eu quero remover.
(Observe que esta é a segunda guia no widget da guia. Portanto, usarei "1" como o índice para me referir a esta guia)
O código a ser removido e adicionar está como abaixo.
ui.genTab->removeTab(1); // removes the tab at the index 1 which is the second tab from left
ui.genTab->insertTab(1, ui.tabX, "<Name of TabX>"); // The tab is added back.
Aqui, observe que é fácil fazer isso se você tiver a guia adicionada estaticamente no tempo de design. Porque teremos um nome de objeto associado à guia e, portanto, podemos nos referir a ele, ui.tabx. Pelo que você diz, no seu caso, a guia é realmente adicionada estaticamente no tempo de design.
No entanto, se você estiver adicionando as guias dinamicamente, provavelmente precisará manter as guias em uma lista e depois ter outra lista para o DeletedTabs.
Mas a primeira solução provavelmente funcionará para você. Espero que isto ajude.
-Arjun