Domanda

Ho una finestra di dialogo che contiene un TabWidget Qt con un numero di schede aggiunte.

Vorrei nascondere una delle schede.

_mytab->hide() 

non funziona. Non voglio solo eliminare la scheda e tutti i suoi widget dal file .ui perché altro codice si basa sui widget all'interno della scheda. Tuttavia, sarebbe bene generare il codice della scheda, ma in qualche modo no :: insertTab nel generato uic_mydialog.cpp. L'impostazione della proprietà nascosta nel file dell'interfaccia utente non funziona neanche.

Sto usando Qt 3.3

È stato utile?

Soluzione

Vorrei usare QTabDialog :: removePage (QWidget * pTabPage) che non elimina pTabPage, che è quello che vuoi.

_myTabDlg->removePage(_mytab);

Lo sto usando e funziona benissimo!

Altri suggerimenti

Avevo riscontrato lo stesso problema. Sto usando il seguente approccio.

Ora ecco i dati.

  

genTab è il nome del mio QTabWidget

     

tabX è il nome della scheda che voglio rimuovere.

(Nota che questa è la seconda scheda nel Widget Tab. Quindi, userò " 1 " come indice per fare riferimento a questa scheda)

Il codice da rimuovere e aggiungere è il seguente.

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.

Qui, nota che è facile farlo se hai la scheda aggiunta staticamente in fase di progettazione. Perché avremo un nome di oggetto associato alla scheda e quindi possiamo fare riferimento ad essa usando, ui.tabX. Da quello che dici, nel tuo caso la scheda viene effettivamente aggiunta staticamente in fase di progettazione.

Tuttavia, se si aggiungono le schede in modo dinamico, probabilmente sarà necessario mantenere le schede in un elenco e quindi disporre di un altro elenco per le schede eliminate.

Ma molto probabilmente la prima soluzione funzionerà per te. Spero che questo aiuti.

-Arjun

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top