2008-10-16 10 views
6

Tengo un cuadro de diálogo que contiene un Qt TabWidget con varias pestañas añadidas.Ocultar una pestaña agregada previamente a Qt TabWidget

Me gustaría ocultar una de las pestañas.

_mytab->hide() 

no funciona. No quiero simplemente eliminar la pestaña y todos sus widgets del archivo .ui porque otro código se basa en los widgets dentro de la pestaña. Sin embargo, estaría bien generar el código de pestañas, pero de alguna manera no :: insertTab en el uic_mydialog.cpp generado. Establecer la propiedad oculta en el archivo ui tampoco funciona.

estoy usando Qt 3.3

Respuesta

6

me gustaría utilizar QTabDialog :: removePage (QWidget * pTabPage) que no elimine pTabPage, que es lo que desea.

_myTabDlg->removePage(_mytab); 

¡Lo estoy usando y funciona bien!

10

Me encontré con el mismo problema. Estoy usando el siguiente enfoque.

Ahora aquí están los datos.

genTab es el nombre de mi QTabWidget

TABX es el nombre de la ficha que desea eliminar.

(Tenga en cuenta que esta es la segunda pestaña de la Widget Tab. Por lo tanto, i va a utilizar "1" como el índice para referirse a esta ficha)

El código de quitar y añadir es la siguiente .

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. 

Aquí, tenga en cuenta que es fácil hacer esto si tiene la pestaña agregada estáticamente en el tiempo de diseño. Porque tendremos un nombre de objeto asociado a la pestaña y, por lo tanto, podemos referirnos a él usando ui.tabX. Por lo que dices, en tu caso, la pestaña se agrega de manera estática en el tiempo de diseño.

Sin embargo, si está agregando las pestañas dinámicamente, entonces probablemente tendrá que mantener las pestañas en una lista y luego tener otra lista para eliminarlas.

Pero la primera solución funcionará para usted. Espero que esto ayude.

-Arjun

Cuestiones relacionadas