Go back to Richel Bilderbeek's homepage.

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

 

 

 

 

 

(C++) TestTextPositionWidget

 

TestTextPositionWidget is a tool to test the TextPositionWidget class.

 

 

 

 

 

Downloads

 

Technical facts

 

Operating system(s) or programming environment(s)

IDE(s):

Project type:

C++ standard:

Compiler(s):

Libraries used:

 

 

 

 

 

Qt project file: ./ToolTestTextPositionWidget/ToolTestTextPositionWidgetDesktop.pro

 

include(../../DesktopApplication.pri)
include(../../Libraries/Boost.pri)
include(../../Libraries/GeneralConsole.pri)
include(../../Libraries/GeneralDesktop.pri)

include(ToolTestTextPositionWidgetDesktop.pri)

SOURCES += qtmain.cpp

 

 

 

 

 

./ToolTestTextPositionWidget/ToolTestTextPositionWidgetConsole.pri

 

INCLUDEPATH += ../../Tools/ToolTestTextPositionWidget

SOURCES += \
    ../../Tools/ToolTestTextPositionWidget/testtextpositionwidgetmenudialog.cpp

HEADERS += \
    ../../Tools/ToolTestTextPositionWidget/testtextpositionwidgetmenudialog.h

 

 

 

 

 

./ToolTestTextPositionWidget/ToolTestTextPositionWidgetDesktop.pri

 

include(../../Tools/ToolTestTextPositionWidget/ToolTestTextPositionWidgetConsole.pri)

SOURCES += \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmaindialog.cpp \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmenudialog.cpp \
    ../../Tools/ToolTestTextPositionWidget/qttextpositionwidget.cpp \
    ../../Tools/ToolTestTextPositionWidget/qttextpositionitem.cpp

HEADERS += \
    ../../Tools/ToolTestTextPositionWidget/qttextpositionwidget.h \
    ../../Tools/ToolTestTextPositionWidget/qttextpositionitem.h \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmaindialog.h \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmenudialog.h

FORMS += \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmaindialog.ui \
    ../../Tools/ToolTestTextPositionWidget/qttesttextpositionwidgetmenudialog.ui

 

 

 

 

 

./ToolTestTextPositionWidget/qtmain.cpp

 

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QApplication>
#include "qttesttextpositionwidgetmenudialog.h"
#pragma GCC diagnostic pop

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  ribi::QtTestTextPositionWidgetMenuDialog w;
  w.show();
  return a.exec();
}

 

 

 

 

 

./ToolTestTextPositionWidget/qttesttextpositionwidgetmaindialog.h

 

#ifndef QTTOOLTESTTEXTPOSITIONWIDGETMAINDIALOG_H
#define QTTOOLTESTTEXTPOSITIONWIDGETMAINDIALOG_H

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include "qthideandshowdialog.h"
#pragma GCC diagnostic pop

namespace Ui {
  class QtTestTextPositionWidgetMainDialog;
}

namespace ribi {

class QtTestTextPositionWidgetMainDialog : public QtHideAndShowDialog
{
  Q_OBJECT
    
public:
  explicit QtTestTextPositionWidgetMainDialog(QWidget *parent = 0);
  QtTestTextPositionWidgetMainDialog(const QtTestTextPositionWidgetMainDialog&) = delete;
  QtTestTextPositionWidgetMainDialog& operator = (const QtTestTextPositionWidgetMainDialog&) = delete;
  ~QtTestTextPositionWidgetMainDialog() noexcept;
    
private:
  Ui::QtTestTextPositionWidgetMainDialog *ui;
};

} //~namespace ribi

#endif // QTTOOLTESTTEXTPOSITIONWIDGETMAINDIALOG_H

 

 

 

 

 

./ToolTestTextPositionWidget/qttesttextpositionwidgetmaindialog.cpp

 

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include "qttextpositionwidget.h"
#include "qttesttextpositionwidgetmaindialog.h"
#include "ui_qttesttextpositionwidgetmaindialog.h"
#pragma GCC diagnostic pop

ribi::QtTestTextPositionWidgetMainDialog::QtTestTextPositionWidgetMainDialog(QWidget *parent)
  : QtHideAndShowDialog(parent),
    ui(new Ui::QtTestTextPositionWidgetMainDialog)
{
  ui->setupUi(this);
  ui->layout->addWidget(
    new QtTextPositionWidget(
      {
       "Alpha",
       "Beta",
       "Gamma",
       "Delta",
       "Epsilon",
       "Eta"
      }
    )
  );
}

ribi::QtTestTextPositionWidgetMainDialog::~QtTestTextPositionWidgetMainDialog() noexcept
{
  delete ui;
}

 

 

 

 

 

./ToolTestTextPositionWidget/qttesttextpositionwidgetmenudialog.h

 

#ifndef QTTESTTEXTPOSITIONWIDGETMENUDIALOG_H
#define QTTESTTEXTPOSITIONWIDGETMENUDIALOG_H

#include "qthideandshowdialog.h"

namespace Ui {
  class QtTestTextPositionWidgetMenuDialog;
}

namespace ribi {

class QtTestTextPositionWidgetMenuDialog : public QtHideAndShowDialog
{
  Q_OBJECT

public:
  explicit QtTestTextPositionWidgetMenuDialog(QWidget *parent = 0);
  QtTestTextPositionWidgetMenuDialog(const QtTestTextPositionWidgetMenuDialog&) = delete;
  QtTestTextPositionWidgetMenuDialog& operator=(const QtTestTextPositionWidgetMenuDialog&) = delete;
  ~QtTestTextPositionWidgetMenuDialog() noexcept;

protected:
  
  void keyPressEvent(QKeyEvent *);

private:
  Ui::QtTestTextPositionWidgetMenuDialog *ui;

private slots:
  void on_button_about_clicked();
  void on_button_quit_clicked();
  void on_button_start_clicked();
};

} //~namespace ribi

#endif // QTTESTTEXTPOSITIONWIDGETMENUDIALOG_H

 

 

 

 

 

./ToolTestTextPositionWidget/qttesttextpositionwidgetmenudialog.cpp

 

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include "qttesttextpositionwidgetmenudialog.h"

#include <QDesktopWidget>
#include <QKeyEvent>

#include "testtextpositionwidgetmenudialog.h"
#include "qtaboutdialog.h"
#include "qttesttextpositionwidgetmaindialog.h"
#include "qthideandshowdialog.h"
#include "ui_qttesttextpositionwidgetmenudialog.h"
#pragma GCC diagnostic pop

ribi::QtTestTextPositionWidgetMenuDialog::QtTestTextPositionWidgetMenuDialog(QWidget *parent) :
    QtHideAndShowDialog(parent),
    ui(new Ui::QtTestTextPositionWidgetMenuDialog)
{
  ui->setupUi(this);
}

ribi::QtTestTextPositionWidgetMenuDialog::~QtTestTextPositionWidgetMenuDialog() noexcept
{
  delete ui;
}

void ribi::QtTestTextPositionWidgetMenuDialog::keyPressEvent(QKeyEvent * event)
{
  if (event->key() == Qt::Key_Escape) { close(); return; }
}

void ribi::QtTestTextPositionWidgetMenuDialog::on_button_about_clicked()
{
  About a = TestTextPositionWidgetMenuDialog::GetAbout();
  a.AddLibrary("QtHideAndShowDialog version: " + QtHideAndShowDialog::GetVersion());
  QtAboutDialog d(a);
  d.setWindowIcon(this->windowIcon());
  d.setStyleSheet(this->styleSheet());
  this->ShowChild(&d);
}

void ribi::QtTestTextPositionWidgetMenuDialog::on_button_quit_clicked()
{
  close();
}

void ribi::QtTestTextPositionWidgetMenuDialog::on_button_start_clicked()
{
  QtTestTextPositionWidgetMainDialog d;
  d.setStyleSheet(this->styleSheet());
  ShowChild(&d);
}

 

 

 

 

 

./ToolTestTextPositionWidget/qttextpositionitem.h

 

#ifndef QTTEXTPOSITIONITEM_H
#define QTTEXTPOSITIONITEM_H

#include <string>

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QGraphicsItem>
#pragma GCC diagnostic pop

struct QtTextPositionItem : public QGraphicsItem
{
  ///Constructor of QtTextPositionItem
  QtTextPositionItem(
    const std::string& text,
    QGraphicsItem *parent = 0);

  protected:
  ///Paint a QtTextPositionItem
  void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *);

  ///The rectangle that determines the edges of the QtTextPositionItem
  QRectF boundingRect() const;

  ///The text to display
  const std::string m_text;
  ///The rectangle the text is in
  const QRectF m_rect;
};

#endif // QTTEXTPOSITIONITEM_H

 

 

 

 

 

./ToolTestTextPositionWidget/qttextpositionitem.cpp

 

#include <iostream>

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QCursor>
#include <QFont>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
#include "qttextpositionitem.h"
#pragma GCC diagnostic pop

QtTextPositionItem::QtTextPositionItem(
  const std::string& text,
  QGraphicsItem *parent)
  : QGraphicsItem(parent),
    m_text(text),
    //Add a margin of 2 pixels at the edges
    m_rect(
      -2,
      -2,
      //For a pixels size of 13, the characters will be 8 pixels wide
      4 + (8 * static_cast<int>(text.size())),
      //For a pixels size of 13, the characters will be 13 pixels high
      4 + 13)

{
  this->setFlags(ItemIsMovable);
}

QRectF QtTextPositionItem::boundingRect() const
{
  return m_rect;
}

void QtTextPositionItem::paint(
  QPainter *painter,
  const QStyleOptionGraphicsItem * /* option */ ,
  QWidget * /* widget */ )
{
  QFont font;
  font.setFamily("monospace");
  font.setPixelSize(13);
  painter->setFont(font);
  painter->setBrush(QBrush(QColor(228,228,228)));
  painter->drawRect(m_rect);
  //Use a margin of 2 around the edges
  painter->drawText(m_rect.adjusted(2,2,-2,-2),m_text.c_str());
}

 

 

 

 

 

./ToolTestTextPositionWidget/qttextpositionwidget.h

 

#ifndef QTTEXTPOSITIONWIDGET_H
#define QTTEXTPOSITIONWIDGET_H

#include <string>
#include <vector>

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QGraphicsView>
#pragma GCC diagnostic pop

struct QtTextPositionWidget : public QGraphicsView
{
  QtTextPositionWidget(const std::vector<std::string>& items);
};

#endif // QTTEXTPOSITIONWIDGET_H

 

 

 

 

 

./ToolTestTextPositionWidget/qttextpositionwidget.cpp

 

#include <cassert>

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include "qttextpositionitem.h"
#include "qttextpositionwidget.h"
#pragma GCC diagnostic pop

QtTextPositionWidget::QtTextPositionWidget(const std::vector<std::string>& items)
{
  QGraphicsScene * const scene = new QGraphicsScene(this);
  this->setScene(scene);

  std::for_each(items.begin(),items.end(),
    [this,scene](const std::string& s)
    {
      QtTextPositionItem * item = new QtTextPositionItem(s);
      //Scatter those items around a bit
      item->setPos(
        (this->width()  / 2.0) - 64 + (std::rand() % 128),
        (this->height() / 2.0) - 64 + (std::rand() % 128));

      scene->addItem(item);
    }
  );
}

 

 

 

 

 

./ToolTestTextPositionWidget/testtextpositionwidgetmenudialog.h

 

//---------------------------------------------------------------------------
/*
TestTextPositionWidget, solver of quadratic equations
Copyright (C) 2008-2014 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
// From http://www.richelbilderbeek.nl/ToolTestTextPositionWidget.htm
//---------------------------------------------------------------------------
#ifndef TESTTEXTPOSITIONWIDGETMENUDIALOG_H
#define TESTTEXTPOSITIONWIDGETMENUDIALOG_H

#include <string>
#include <vector>

#include "about.h"

namespace ribi {

///GUI independent TestTextPositionWidget menu dialog
struct TestTextPositionWidgetMenuDialog
{
  static const About GetAbout();
  static const std::string GetVersion();
  static const std::vector<std::string> GetVersionHistory();
};

} //~namespace ribi

#endif // TESTTEXTPOSITIONWIDGETMENUDIALOG_H

 

 

 

 

 

./ToolTestTextPositionWidget/testtextpositionwidgetmenudialog.cpp

 

//---------------------------------------------------------------------------
/*
TestTextPositionWidget, solver of quadratic equations
Copyright (C) 2008-2014 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
// From http://www.richelbilderbeek.nl/ToolTestTextPositionWidget.htm
//---------------------------------------------------------------------------
#include "testtextpositionwidgetmenudialog.h"

#include "trace.h"

const ribi::About ribi::TestTextPositionWidgetMenuDialog::GetAbout()
{
  About a(
    "Richel Bilderbeek",
    "TestTextPositionWidget",
    "tool to test the TicTacToe class",
    "the 15th of Oktober 2013",
    "2011-2013",
    "http://www.richelbilderbeek.nl/ToolTestTextPositionWidget.htm",
    GetVersion(),
    GetVersionHistory());
  a.AddLibrary("Trace version: " + Trace::GetVersion());
  return a;
}

const std::string ribi::TestTextPositionWidgetMenuDialog::GetVersion()
{
  return "1.4";
}

const std::vector<std::string> ribi::TestTextPositionWidgetMenuDialog::GetVersionHistory()
{
  return {
    "2010-09-17: version 1.0: initial version, use of QTable as board",
    "2010-09-22: version 1.1: use of TicTacToeWidget",
    "2011-01-06: version 1.2: merge with Wt application",
    "2011-01-06: version 1.3: moved TicTacToe and QtTicTacToeWidget to different folders",
    "2013-10-14: version 1.4: conformized to ProjectRichelBilderbeek"
  };
}

 

 

 

 

 

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