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

StackOverflow https://stackoverflow.com/questions/207881

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть диалог, содержащий 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.Судя по вашим словам, в вашем случае вкладка действительно добавляется статически во время разработки.

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

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

-Арджун

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top