Скрыть вкладку, ранее добавленную в Qt TabWidget

У меня есть диалог, который содержит Qt TabWidget с добавлением нескольких вкладок.

Я хотел бы скрыть одну из вкладок.

_mytab->hide() 

не работает. Я не хочу просто удалять вкладку и все ее виджеты из.ui-файл, потому что другой код зависит от виджетов на вкладке. Однако было бы неплохо сгенерировать код вкладки, но как-то не ::insertTab в сгенерированном uic_mydialog.СРР. Установка скрытое свойство в файле UI не работает любой.

Я использую Qt 3.3

2 ответов


Я бы использовал QTabDialog:: removePage(QWidget* pTabPage), который не удаляет pTabPage, что вы хотите.

_myTabDlg->removePage(_mytab);

Я использую его, и он отлично работает !


я столкнулся с той же проблемой. Я использую следующий подход.

теперь вот данные.

genTab-это имя моего QTabWidget

tabX-это имя вкладки, которую я хочу удалить.

(обратите внимание, что это вторая вкладка в виджете Tab. Следовательно, я буду использовать "1" в качестве индекса для ссылки на эту вкладку)

код для удаления и добавления, как показано ниже.

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.

здесь, обратите внимание, что это легко сделать, если вкладка добавлена статически во время разработки. Потому что у нас будет имя объекта, связанное с вкладкой, и поэтому мы можем ссылаться на него с помощью ui.tabX. Из того, что вы говорите, в вашем случае вкладка действительно добавляется статически во время разработки.

однако, если вы добавляете вкладки динамически, то, вероятно, вам придется поддерживать вкладки в списке, а затем иметь другой список для deletedTabs.

но первый вариант скорее всего работать для вас. Надеюсь, это поможет.

-Арджун