Skip to content

Latest commit

 

History

History
339 lines (194 loc) · 24.6 KB

CppWtExample2.md

File metadata and controls

339 lines (194 loc) · 24.6 KB

 

 

 

 

 

 

Wt example 2 is a Wt example to code and display a simple menu.

 

 

 

 

 

Downloads

 

 

 

 

 

 

 

IDE(s):

Project type:

  • console Console application

Compiler(s):

Libraries used:

  • STL STL: GNU ISO C++ Library, version 4.4.5
  • Wt Wt: version 3.1.2

 

 

 

 

 

Qt project file: CppWtMenu.pro

 


#------------------------------------------------- # # 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

 


#ifndef MENUWIDGET_H #define MENUWIDGET_H //--------------------------------------------------------------------------- #include <Wt/WContainerWidget> //--------------------------------------------------------------------------- namespace Wt {   struct WHBoxLayout;   struct WPushButton;   struct WStackedWidget;   struct WVBoxLayout; }; //--------------------------------------------------------------------------- struct MenuWidget : public Wt::WContainerWidget {   MenuWidget();   private:   Wt::WPushButton * const m_button1;   Wt::WPushButton * const m_button2;   Wt::WHBoxLayout * const m_layout_main;   Wt::WVBoxLayout * const m_layout_menu_bar;   Wt::WStackedWidget * const m_stack;   void onButton1Click();   void onButton2Click(); }; //--------------------------------------------------------------------------- //From http://www.richelbilderbeek.nl/CppGetTime.htm const std::string GetTime(); //--------------------------------------------------------------------------- #endif // 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:

 


http://127.0.0.1:8080/

 

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.