Layout — building blocks for organizing your application as a tree of widgets

HTML Templates

A WTemplate can be used to format a number of widgets within an XHTML fragment. This is especially useful as an alternative to a container widget if you want to use CSS for style and layout, and when the contents is relatively static: for each placeholder you must bind a widget or a string (which can be empty).

In a template text, a ${var} indicates a place holder named var which is substituted with a widget or string that is bound to that variable. Other syntactical constructs are:

${var arg1 arg2}
${<condition>} ... ${</condition>}
${fun:arg1 arg2}

The template text can be provided by a WString and is thus easily localized and internalitionalized using a message resource bundle.

Below is an example of a template text, illustrating the use of place holders for a line edit and two buttons.

<div class="form">
<label>Please enter your name: ${name-edit}</label>
${save-button} ${cancel-button}

This template text, made available as a string in a resource bundle with the id "WTemplate-example", is used by the following example:


#include <Wt/WLineEdit>
#include <Wt/WPushButton>
#include <Wt/WTemplate>

Wt::WTemplate *t = new Wt::WTemplate(Wt::WString::tr("WTemplate-example"));

t->bindWidget("name-edit", new Wt::WLineEdit());
t->bindWidget("save-button", new Wt::WPushButton("Save"));
t->bindWidget("cancel-button", new Wt::WPushButton("Cancel"));

If you want to simply display an HTML fragment without binding any widgets within it, then the WText widget is probably what you are looking for.