2010-01-26 4 views
1

В моем приложении QT я использую QTabWidget для базовой навигации. Этот QTabWidget, который я устанавливаю в ui. В некоторых вкладках QTabWidget мне нужно иметь QStackedWidget, чтобы иметь возможность «развернуть в представлении».QStackedWidget внутри вкладки QTabWidget?

Я попытался добавить QStackedWidget внутри ui, но он автоматически добавляет страницу в стек. Вместо этого я хочу добавить страницы для QStackedWidget. Если я в коде попытаюсь сделать это, у stackedWidget уже есть стандартная страница, поэтому myWidget будет вторым в стеке.

MyWidget *myWidget = new MyWidget(ui.stackedWidget); 
ui.stackedWidget->addWidget(myWidget); 

Что такое лучший и простой способ настройки QStackedWidget на вкладке QTabWidget?

ответ

1

Как насчет:

QTabWidget *myTabWidget = new QTabWidget(this); 
QStackedWidget *myStackedWidget = new QStackedWidget(myTabWidget); 

myTabWidget->addTab(myStackedWidget, "Stacked Widget"); 

Также Вы можете удалить все существующие страницы стека в Designer/Creator Qt. Просто щелкните правой кнопкой мыши на сложном виджете и удалите все существующие страницы. Затем вы можете добавить необходимые страницы в код, используя addWidget().

+0

Так что вы думаете, я должен создать QTabWidget в коде также? Я думал, что было хорошо создать его в ui, но, возможно, это не очень хорошее решение. – Martin

+0

Также кажется, что в дизайнере при щелчке правой кнопкой мыши кажется, что я могу удалить все страницы, кроме одного. Таким образом, в QStackWidget всегда будет одна страница. – Martin

+0

В Qt Creator я также мог удалить последнюю страницу. Кстати, вы можете отредактировать файл .ui с текстовым редактором, чтобы удалить эту последнюю страницу, если вы не можете сделать это в Дизайнере. Также может быть хорошей идеей создать QTabWidget в коде, поскольку это не так много работает. – BastiBen

0

Я бы сказал - создайте его в ui, как и вы (таким образом, легче компоновку/положение, добавить другие виджеты на вкладке позже и т. Д.), Но просто удалите все существующие страницы (добавленные дизайнером) от кода и добавить свои новые.

На самом деле Дизайнер из Qt 4.6 позволяет удалять все страницы из сложного виджета - вам нужно щелкнуть правой кнопкой мыши, перейти в подменю «Страница X of Y» и выбрать «Удалить». Повторяйте до тех пор, пока не исчезнут все страницы.)

Возможно, это было добавлено в Designer совсем недавно, поэтому вам может потребоваться удалить их из кода, если у вас установлена ​​более ранняя версия Qt.

Говоря о сохранении материала в пользовательском интерфейсе против держать его в коде я бы голосовать за «столько, сколько в UI-файл, насколько это возможно» :)

+0

Да, я тоже голосую за пользовательский интерфейс! :) Но я использую Carbide при создании своего приложения (QT для Symbian), и там кажется, что я не могу удалить из дизайнера, или я ошибаюсь? – Martin

+0

Хм, может, у вас старая версия Qt для Symbian? IIRC Qt 4.6.1 был выпущен для symbian тоже - он должен иметь новый конструктор с такой функциональностью. – dimsuz

 Смежные вопросы

  • Нет связанных вопросов^_^