QStackedWidget на вкладке QTabWidget?
-
22-09-2019 - |
Вопрос
В моем приложении QT я использую QTabWidget для базовой навигации.Этот QTabWidget я настраиваю в пользовательском интерфейсе.На некоторых вкладках QTabWidget мне нужен QStackedWidget, чтобы иметь возможность «углубиться в представление».
Я также попробовал добавить QStackedWidget внутри пользовательского интерфейса, но он автоматически добавляет страницу в стек.Вместо этого я хочу добавить страницы для QStackedWidget в код.Если я в коде попытаюсь сделать это, у stackedWidget уже есть стандартная страница, поэтому myWidget будет вторым в стеке.
MyWidget *myWidget = new MyWidget(ui.stackedWidget);
ui.stackedWidget->addWidget(myWidget);
Как лучше всего и проще всего настроить QStackedWidget на вкладке QTabWidget?
Решение
Как насчет:
QTabWidget *myTabWidget = new QTabWidget(this);
QStackedWidget *myStackedWidget = new QStackedWidget(myTabWidget);
myTabWidget->addTab(myStackedWidget, "Stacked Widget");
Также вы можете удалить все существующие страницы стека в Qt Designer/Creator.Просто щелкните правой кнопкой мыши сложенный виджет и удалите все существующие страницы.Затем вы можете добавить необходимые страницы в код, используя addWidget()
.
Другие советы
Я бы сказал - создайте его в пользовательском интерфейсе, так же, как вы (так будет проще разметить/позиционировать, позже добавить другие виджеты на вкладку и т. д.), но просто удалите все существующие страницы (добавленные дизайнером) из кода и добавьте твои новые.
На самом деле Designer из Qt 4.6 позволяет удалять все страницы из сложенного виджета - вам нужно щелкнуть правой кнопкой мыши, перейти в подменю «Страница X из Y» и выбрать «Удалить».Повторяйте, пока все страницы не исчезнут :)
Возможно, они были добавлены в дизайнер совсем недавно, поэтому вам все равно придется удалить их из кода, если у вас более ранняя версия Qt.
Говоря о хранении вещей внутри пользовательского интерфейса, а не в коде, я бы проголосовал за «как можно больше в файле пользовательского интерфейса» :)