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