The interface example

interface

Adding a graphical user interface around a QGLViewer.

The same example as simpleViewer with an interface designed with designer. The interface.ui file is the description of the interface resulting of designer. The interface.cw file is the description of the signals and slots available. Here we use three slots and three signals to connect to and from the interface and the viewer.

The designer cw files (custom widget), describing all the available signals and slots of the libQGLViewer classes are available in the QGLViewer include directory.

interface.h


#include <QGLViewer/qglviewer.h>

class Viewer : public QGLViewer
{
public :
  Viewer(QWidget *parent,const char *name);

protected :
  virtual void draw();
  virtual void init();
  virtual QString helpString() const;
};

interface.cpp


#include "interface.h"
#include <math.h>

// Constructor must call the base class constructor.
Viewer::Viewer(QWidget *parent,const char *name)
  : QGLViewer(parent, name)
{
  restoreFromFile();
  help();
}

void Viewer::draw()
{
  // Draws a spiral
  const float nbSteps = 500.0;
  glBegin(GL_QUAD_STRIP);
  for (float i=0; i<nbSteps; ++i)
    {
      float ratio = i/nbSteps;
      float angle = 21.0*ratio;
      float c = cos(angle);
      float s = sin(angle);
      float r1 = 1.0 - 0.8*ratio;
      float r2 = 0.8 - 0.8*ratio;
      float alt = ratio - 0.5;
      const float nor = .5;
      const float up = sqrt(1.0-nor*nor);
      glColor3f(1-ratio, .2 , ratio);
      glNormal3f(nor*c, up, nor*s);
      glVertex3f(r1*c, alt, r1*s);
      glVertex3f(r2*c, alt+0.05, r2*s);
    }
  glEnd();
}

void Viewer::init()
{
  restoreFromFile();
}

QString Viewer::helpString() const
{
  QString text("<h2>I n t e r f a c e</h2>");
  text += "A GUI can be added to a QGLViewer widget using Qt's <i>designer</i>. ";
  text += "All the available QGLViewer signals and slots are listed in a <b>qglviewer.cw</b> file, ";
  text += "located in the QGLViewer <i>include</i> directory.";
  return text;
}

main.cpp


#include "interface.h"
#include "myInterface.h"
#include <qapplication.h>

int main(int argc, char** argv)
{
  // Read command lines arguments.
  QApplication application(argc,argv);

  // Instantiate the interface.
  myInterface *main_window = new myInterface(NULL);

  // Make the viewer window visible on screen.
  main_window->setCaption("Interface Example");
  main_window->show();

  // Set the viewer as the application main widget.
  application.setMainWidget(main_window);

  // Run main loop.
  return application.exec();
}

Go back to the examples main page

Valid XHTML 1.0! Valid CSS! Last modified on Friday, June 11, 2004.