Navigation — interacting with a browser's navigation model

Stacked widget

A stacked widget is a container widget that stacks its child widgets on top of each other and displays a single child at any time.

The WStackedWidget accomplishes this using setHidden(bool) on the children. Using currentIndex() and setCurrentIndex(int index) you can retrieve or set the visible widget.

Like its parent WContainerWidget, WStackedWidget is by default not inline. The widget is rendered using an HTML <div> tag and does not provide styling. It can be styled using inline or external CSS as appropriate.

Example
Stacked widget-index 0

Hello

source
#include <Wt/WContainerWidget.h>
#include <Wt/WSpinBox.h>
#include <Wt/WStackedWidget.h>
#include <Wt/WText.h>

auto container = Wt::cpp14::make_unique<Wt::WContainerWidget>();

Wt::WSpinBox *sb =
    container->addWidget(Wt::cpp14::make_unique<Wt::WSpinBox>());
sb->setRange(0,2);

Wt::WStackedWidget *stack =
    container->addWidget(Wt::cpp14::make_unique<Wt::WStackedWidget>());
stack->addWidget(Wt::cpp14::make_unique<Wt::WText>("<strong>Stacked widget-index 0</strong>"
                               "<p>Hello</p>"));
stack->addWidget(Wt::cpp14::make_unique<Wt::WText>("<strong>Stacked widget-index 1</strong>"
                               "<p>This is Wt</p>"));
stack->addWidget(Wt::cpp14::make_unique<Wt::WText>("<strong>Stacked widget-index 2</strong>"
                               "<p>Do you like it?</p>"));

sb->changed().connect([=] {
    if (sb->validate() == Wt::ValidationState::Valid)
	stack->setCurrentIndex(sb->value());
});