2008-10-16 13 views
6

Ich habe einen Dialog, der ein Qt TabWidget mit einer Anzahl von Registerkarten enthält.Eine Registerkarte ausblenden, die zuvor zu Qt TabWidget hinzugefügt wurde

Ich möchte eine der Registerkarten ausblenden.

_mytab->hide() 

funktioniert nicht. Ich möchte nicht nur die Registerkarte und alle ihre Widgets aus der .ui-Datei löschen, da anderer Code von den Widgets innerhalb der Registerkarte abhängt. Es wäre jedoch in Ordnung, den Tab-Code zu generieren, aber irgendwie nicht :: insertTab in der generierten uic_mydialog.cpp. Das Festlegen der ausgeblendeten Eigenschaft in der UI-Datei funktioniert auch nicht.

ich Qt 3.3

Antwort

6

mit würde ich QTabDialog :: removePage (QWidget * pTabPage), die pTabPage nicht löschen verwenden, das ist, was Sie wollen.

_myTabDlg->removePage(_mytab); 

Ich benutze es und es funktioniert gut!

10

Ich hatte das gleiche Problem festgestellt. Ich verwende den folgenden Ansatz.

Jetzt sind hier die Daten.

genTab ist der Name meiner QTabWidget

TABX ist der Name der Registerkarte, die ich entfernen möchten.

(Man beachte, daß dies die zweite Lasche in der Tab Widget ist. Daher wird i „1“ als der Index zu diesem Register verweisen verwendet werden)

Der Code, wie unten zu entfernen und hinzuzufügen, ist .

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. 

Hier, beachten Sie, dass es leicht ist, dies zu tun, wenn Sie die Registerkarte statisch in der Entwurfszeit hinzugefügt haben. Weil wir einen Objektnamen mit der Registerkarte verknüpft haben und daher können wir uns darauf beziehen, indem wir ui.tabX benutzen. Von dem, was Sie sagen, in Ihrem Fall ist die Registerkarte tatsächlich statisch in der Entwurfszeit hinzugefügt.

Wenn Sie die Registerkarten jedoch dynamisch hinzufügen, müssen Sie wahrscheinlich die Registerkarten in einer Liste verwalten und dann eine andere Liste für deletedTabs haben.

Aber die erste Lösung wird höchstwahrscheinlich für Sie arbeiten. Hoffe, das hilft.

-Arjun

Verwandte Themen