Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.






(C++) WtAutoRun


WtQt CreatorLubuntu


WtAutoRun is a bare-bone Wt program that starts the application without the need of a user giving command-line parameters. It is a fine starting point for a Wt application.



The class WtAutoConfig embodies this functionality as a stand-alone class.

Technical facts


Application type(s)

Operating system(s) or programming environment(s)


Project type:

C++ standard:


Libraries used:






Qt project file: ./CppWtAutoRun/CppWtAutoRun.pro


exists(../../WebApplication.pri) {
!exists(../../WebApplication.pri) {
  QT       += core
  QT       -= gui
  CONFIG   += console
  CONFIG   -= app_bundle
  TEMPLATE = app

exists(../../Libraries/BoostAll.pri) {
!exists(../../Libraries/BoostAll.pri) {
  LIBS += \
    -lboost_date_time \
    -lboost_filesystem \
    -lboost_program_options \
    -lboost_regex \
    -lboost_signals \

exists(../../Libraries/Wt.pri) {
!exists(../../Libraries/Wt.pri) {
    ../../Libraries/wt/src \
  LIBS += -lwt -lwthttp

SOURCES += main.cpp








#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#include <boost/program_options.hpp>
#include <boost/signals2.hpp>
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WEnvironment>
#include <Wt/WPaintDevice>
#include <Wt/WPaintedWidget>
#include <Wt/WPainter>
#include <Wt/WPushButton>
#pragma GCC diagnostic pop

struct WtWidget : public Wt::WPaintedWidget
  void paintEvent(Wt::WPaintDevice *paintDevice)
    Wt::WPainter painter(paintDevice);
    for (int y=0; y!=32; ++y)
      for (int x=0; x!=32; ++x)
              ((x+0) * 8) % 256,
              ((y+0) * 8) % 256,
              ((x+y) * 8) % 256)));
        //Draw a line of one pixel long
        //drawPoint yiels too white results

struct WtDialog : public Wt::WContainerWidget
  : m_widget(new WtWidget)
  WtWidget * const m_widget;

struct WtApplication : public Wt::WApplication
  WtApplication(const Wt::WEnvironment& env)
    : Wt::WApplication(env),
    m_dialog(new WtDialog)
    this->setTitle("Thinking Wt 2: creating a  widget");
  WtDialog * const m_dialog;

Wt::WApplication *createApplication(
  const Wt::WEnvironment& env)
  return new WtApplication(env);

int main(int argc, char **argv)
  // Declare the supported options.
  boost::program_options::options_description d(
    "Allowed options for CppWtAutoRun");
  std::string docroot;
  std::string http_address;
  std::string http_port;
        "produce this help message")
         "the docroot")
         "the server's http address")
         "the server's http port")

  boost::program_options::variables_map m;
      argc, argv, d), m);

  if (m.count("help"))
    //Display the options_description
    std::cout << d << "\n";
    return 0;

  //Create the arguments in std::string format
  std::vector<std::string> v(7);
  v[0] = argv[0];
  v[1] = "--docroot";
  v[2] = docroot;
  v[3] = "--http-address";
  v[4] = http_address;
  v[5] = "--http-port";
  v[6] = http_port;

  //Convert the arguments to char* format
  std::vector<char*> w(7);
  for (int i=0; i!=7; ++i) w[i] = &v[i][0];

  //Give Wt the modified parameters
  return WRun(w.size(), &w[0], &createApplication);






Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.


Valid XHTML 1.0 Strict

This page has been created by the tool CodeToHtml