Go back to Richel Bilderbeek's homepage.
Go back to Richel Bilderbeek's C++ page.
Wt example 2 is a Wt example to code
and display a simple menu.
Downloads
IDE(s):
Project type:
Console application
Compiler(s):
Libraries used:
STL: GNU ISO C++ Library, version 4.4.5
Wt: version 3.1.2
#-------------------------------------------------
#
# Project created by QtCreator 2010-12-14T12:41:04
#
#-------------------------------------------------
QT += core
QT -= gui
LIBS += -lwt -lwthttp
QMAKE_CXXFLAGS += -DNDEBUG
TARGET = CppWtMenu
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
menuapplication.cpp \
menuwidget.cpp \
beerwanterwidget.cpp \
kaderlooswidget.cpp
HEADERS += \
menuapplication.h \
menuwidget.h \
beerwanterwidget.h \
kaderlooswidget.h
|
beerwanterwidget.cpp
#include <Wt/WImage>
//---------------------------------------------------------------------------
#include "beerwanterwidget.h"
//---------------------------------------------------------------------------
BeerWanterWidget::BeerWanterWidget()
: m_image(new Wt::WImage("Beer.png","Beer"))
{
this->addWidget(m_image);
}
//---------------------------------------------------------------------------
|
beerwanterwidget.h
#ifndef BEERWANTERWIDGET_H
#define BEERWANTERWIDGET_H
//---------------------------------------------------------------------------
#include <Wt/WContainerWidget>
//---------------------------------------------------------------------------
namespace Wt
{
struct WImage;
};
//---------------------------------------------------------------------------
struct BeerWanterWidget : public Wt::WContainerWidget
{
BeerWanterWidget();
private:
Wt::WImage * const m_image;
};
//---------------------------------------------------------------------------
#endif // BEERWANTERWIDGET_H
|
kaderlooswidget.cpp
#include <Wt/WPushButton>
//---------------------------------------------------------------------------
#include "kaderlooswidget.h"
//---------------------------------------------------------------------------
KaderloosWidget::KaderloosWidget()
: m_button(new Wt::WPushButton)
{
this->addWidget(m_button);
m_button->setText("KaderloosWidget");
}
//---------------------------------------------------------------------------
|
kaderlooswidget.h
#ifndef KADERLOOSWIDGET_H
#define KADERLOOSWIDGET_H
//---------------------------------------------------------------------------
#include <Wt/WContainerWidget>
//---------------------------------------------------------------------------
namespace Wt
{
struct WPushButton;
};
//---------------------------------------------------------------------------
struct KaderloosWidget : public Wt::WContainerWidget
{
KaderloosWidget();
private:
Wt::WPushButton * const m_button;
};
//---------------------------------------------------------------------------
#endif // KADERLOOSWIDGET_H
|
main.cpp
//---------------------------------------------------------------------------
#include <Wt/WApplication>
//---------------------------------------------------------------------------
#include "menuapplication.h"
//---------------------------------------------------------------------------
Wt::WApplication *createApplication(
const Wt::WEnvironment& env)
{
return new MenuApplication(env);
}
//---------------------------------------------------------------------------
int main(int argc, char **argv)
{
return WRun(argc, argv, &createApplication);
}
//---------------------------------------------------------------------------
|
menuapplication.cpp
#include "menuapplication.h"
#include "menuwidget.h"
//---------------------------------------------------------------------------
MenuApplication::MenuApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env),
m_menu(new MenuWidget)
{
this->setTitle(__TIME__);
root()->addWidget(m_menu);
}
//---------------------------------------------------------------------------
|
menuapplication.h
#ifndef MENUAPPLICATION_H
#define MENUAPPLICATION_H
//---------------------------------------------------------------------------
#include <Wt/WApplication>
//---------------------------------------------------------------------------
struct MenuWidget;
//---------------------------------------------------------------------------
struct MenuApplication : public Wt::WApplication
{
MenuApplication(const Wt::WEnvironment& env);
private:
MenuWidget * const m_menu;
};
//---------------------------------------------------------------------------
#endif // MENUAPPLICATION_H
|
menuwidget.cpp
//---------------------------------------------------------------------------
#include <ctime>
#include <string>
//---------------------------------------------------------------------------
#include <Wt/WHBoxLayout>
#include <Wt/WPushButton>
#include <Wt/WStackedWidget>
#include <Wt/WVBoxLayout>
//---------------------------------------------------------------------------
#include "beerwanterwidget.h"
#include "kaderlooswidget.h"
#include "menuwidget.h"
//---------------------------------------------------------------------------
MenuWidget::MenuWidget()
: m_button1(new Wt::WPushButton),
m_button2(new Wt::WPushButton),
m_layout_main(new Wt::WHBoxLayout),
m_layout_menu_bar(new Wt::WVBoxLayout),
m_stack(new Wt::WStackedWidget)
{
//Fill menu bar
m_layout_menu_bar->setContentsMargins(0,0,0,0);
m_layout_menu_bar->setSpacing(0);
m_layout_menu_bar->addWidget(m_button1);
m_layout_menu_bar->addWidget(m_button2);
//Fill stack
m_stack->addWidget(new BeerWanterWidget);
m_stack->addWidget(new KaderloosWidget);
//Fill main
m_layout_main->addLayout(m_layout_menu_bar);
m_layout_main->addWidget(m_stack);
this->setLayout(m_layout_main);
m_button1->setText("BeerWanter");
m_button2->setText("Kaderloos");
this->resize(200,Wt::WLength::Auto);
m_button1->clicked().connect(this, &MenuWidget::onButton1Click);
m_button2->clicked().connect(this, &MenuWidget::onButton2Click);
}
//---------------------------------------------------------------------------
void MenuWidget::onButton1Click()
{
m_stack->setCurrentIndex(0);
}
//---------------------------------------------------------------------------
void MenuWidget::onButton2Click()
{
m_stack->setCurrentIndex(1);
}
//---------------------------------------------------------------------------
|
menuwidget.h
Additional preparations
Added the following arguments to the Run Settings:
--docroot . --http-address 0.0.0.0 --http-port 8080
|
When running the program (from Qt Creator) you will see the following application output, indicating that
the program works fine:
[2010-Nov-19 16:41:38.365920] 6360 - [notice] "Wt: initializing built-in httpd"
[2010-Nov-19 16:41:38.366043] 6360 - [notice] "Reading Wt config file: /etc/wt/wt_config.xml (location = '/home/richel/qtsdk-2010.04/bin/Projects/Website/CppWtExample2-build-desktop/CppWtExample2')"
[2010-Nov-19 16:41:38.366592] 6360 - [notice] "Started server: http://0.0.0.0:8080"
|
Now, start your web browser and go to the following address:
You will see the 'Hello Wt' dynamic website. You just
deployed your Wt application locally. This is just fine for debugging.
If the application is ready to be put on the web,
deploy the Wt application globally.
Go back to Richel Bilderbeek's C++ page.
Go back to Richel Bilderbeek's homepage.
