2008-10-16 19 views
6

Mam okno dialogowe, które zawiera Qt TabWidget z dodaną liczbą kart.Ukryj kartę poprzednio dodaną do Qt TabWidget

Chciałbym ukryć jedną z zakładek.

_mytab->hide() 

nie działa. Nie chcę po prostu usuwać karty i wszystkich jej widżetów z pliku .ui, ponieważ inny kod opiera się na widgetach na karcie. Jednak byłoby dobrze wygenerować kod tabulatora, ale jakoś nie :: insertTab w wygenerowanym pliku uic_mydialog.cpp. Ustawienie ukrytej właściwości w pliku UI również nie działa.

Używam Qt 3.3

Odpowiedz

6

użyłbym QTabDialog :: removePage (QWidget * pTabPage), który nie usuwa pTabPage, czyli to, co chcesz.

_myTabDlg->removePage(_mytab); 

Używam go i działa poprawnie!

10

Napotkałem ten sam problem. Używam następującego podejścia.

Tutaj są dane.

genTab to nazwa mojego QTabWidget

tabX to nazwa zakładki, które chcę usunąć.

(Należy pamiętać, że jest to druga zakładka w zakładce widgecie. Dlatego będę używał „1” jako wskaźnik odnoszący się do tej zakładce)

Kod usunąć i dodać jest jak poniżej .

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. 

Należy zauważyć, że łatwo jest to zrobić, jeśli tabulacja została dodana statycznie w czasie projektowania. Ponieważ będziemy mieć nazwę obiektu powiązaną z kartą, a więc możemy się do niej odwołać za pomocą, ui.tabX. Z tego co mówisz, w twoim przypadku zakładka jest rzeczywiście dodana statycznie w czasie projektowania.

Jeśli jednak dynamicznie dodajesz karty, prawdopodobnie będziesz musiał zachować karty na liście, a następnie mieć kolejną listę dla usuniętych tabel.

Ale pierwsze rozwiązanie najprawdopodobniej zadziała. Mam nadzieję, że to pomoże.

-Arjun