Скрыть вкладку, ранее добавленную в Qt TabWidget
Вопрос
У меня есть диалог, содержащий Qt TabWidget с несколькими добавленными вкладками.
Я хотел бы скрыть одну из вкладок.
_mytab->hide()
не работает.Я не хочу просто удалять вкладку и все ее виджеты из файла .ui, потому что другой код использует виджеты внутри вкладки.Однако было бы неплохо сгенерировать код табуляции, но почему-то не использовать ::insertTab в сгенерированном uic_mydialog.cpp.Установка скрытого свойства в файле пользовательского интерфейса также не работает.
Я использую Qt 3.3
Решение
Я бы использовал QTabDialog::removePage(QWidget* pTabPage), который не удаляет pTabPage, а это то, что вам нужно.
_myTabDlg->removePage(_mytab);
Я использую его, и он отлично работает!
Другие советы
Я столкнулся с той же проблемой.Я использую следующий подход.
Теперь вот данные.
genTab — это имя моего QTabWidget.
tabX — это имя вкладки, которую я хочу удалить.
(Обратите внимание, что это вторая вкладка виджета вкладок.Следовательно, я буду использовать «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.Судя по вашим словам, в вашем случае вкладка действительно добавляется статически во время разработки.
Однако если вы добавляете вкладки динамически, то, вероятно, вам придется сохранить вкладки в списке, а затем создать другой список для удаленных вкладок.
Но первое решение, скорее всего, вам подойдет.Надеюсь это поможет.
-Арджун