#include #include #include #include #include #include Wt::WContainerWidget *m_displayedLayout = nullptr; void setContainerActive(Wt::WVBoxLayout *layout, std::unique_ptr container) { if (m_displayedLayout != nullptr) { m_displayedLayout->removeFromParent(); m_displayedLayout = nullptr; } m_displayedLayout = layout->addWidget(std::move(container), 1); } std::unique_ptr buildContainer() { auto container = std::make_unique(); auto gridLayout = container->setLayout(std::make_unique()); gridLayout->addWidget( std::make_unique("Text1"), 0, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Text2"), 1, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Text3"), 2, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Text4"), 3, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Value1"), 0, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Value2"), 1, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Value3"), 2, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); gridLayout->addWidget( std::make_unique("Value4"), 3, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top); return container; } std::unique_ptr createApplication(const Wt::WEnvironment &env) { auto app = std::make_unique(env); auto appTheme = std::make_shared(); app->setTheme(appTheme); auto layout = app->root()->setLayout(std::make_unique()); auto button = layout->addWidget(std::make_unique("Update Container")); auto container = buildContainer(); setContainerActive(layout, std::move(container)); button->clicked().connect([layout]() { auto container = buildContainer(); setContainerActive(layout, std::move(container)); }); return app; } int main(int argc, char **argv) { try { Wt::WServer server(argc, argv, WTHTTP_CONFIGURATION); server.addEntryPoint(Wt::EntryPointType::Application, std::bind(createApplication, std::placeholders::_1)); server.run(); } catch (Wt::WException &e) { std::cerr << "Exception: " << e.what() << std::endl; } }