Solved

# a trinagle in  3D

Posted on 2010-09-22
308 Views
Hi,
I need to render a triangle in 3D in Qt . I need any example code to start from it . or easy guide to do that a triangle.

0
• 8
• 5

LVL 33

Accepted Solution

pgnatyuk earned 400 total points
QPainter painter;
QPen pen( red, 2 );
painter.begin( this );   // if it is in void in the paintEvent
painter.setPen( pen );
painter.drawLine(  40,  30,  240,130 );
painter.drawLine( 240,130, 140,80 );
painter.drawLine( 140,  80,   40,30 );
painter.end();

Basic Drawing Example
http://www.greyc.ensicaen.fr/ensicaen/Docs/Qt4/painting-basicdrawing.html
0

LVL 33

Assisted Solution

pgnatyuk earned 400 total points
Now I see '3D' in your question - sorry. I think you ask about OpenGL. So it will be something like that:
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glTranslatef(-1.5f,0.0f,-6.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
}

Here is an example
Hello GL Example
http://doc.trolltech.com/4.5/opengl-hellogl.html

2D Painting Example
http://doc.trolltech.com/4.5/opengl-2dpainting.html

Overpainting Example
http://doc.trolltech.com/4.5/opengl-overpainting.html

OpenGL:
Qt for Embedded Linux and OpenGL
http://doc.trolltech.com/4.5/qt-embedded-opengl.html

Here is a simple tutorial:
http://www.digitalfanatics.org/projects/qt_tutorial/chapter14.html

TUTORIAL: Setting up a basic OpenGL application using Qt
http://episteme.hin.no/wiki/index.php/TUTORIAL:_Setting_up_a_basic_OpenGL_application_using_Qt

0

Author Comment

I know that in 2D i need it in 3D. By the way, thank you for your post
0

Author Comment

and I am sorry after post my above replay I see your post
0

Author Comment

To declare that : void GLWidget::paintGL() do you know which library should I include i use to include that :

#include <QtOpenGL/QtOpenGL>
but still wrong
0

Author Comment

To declare that : void GLWidget::paintGL() do you know which library should I include i use to include that :

#include <QtOpenGL/QtOpenGL>
but still wrong
0

Author Comment

I have received this error message :
6: error: 'GLWidget' has not been declared
0

LVL 33

Assisted Solution

pgnatyuk earned 400 total points
Why you don't want to take these two tutorials first?
TUTORIAL: Setting up a basic OpenGL application using Qt
http://episteme.hin.no/wiki/index.php/TUTORIAL:_Setting_up_a_basic_OpenGL_application_using_Qt

OpenGL
http://www.digitalfanatics.org/projects/qt_tutorial/chapter14.html

The last one has the a source code for download ("here" in the end of the page).

Class GLWidget is from the first tutorial. In the end there is a link to download the source code.
``````class GLWidget : public QGLWidget, public GMWindow {
public:
GLWidget( QWidget *parent = 0 );
~GLWidget();

void          clear();
void          initCameras();

protected:
// ********************
// Derived QT functions
void          glDraw();
void	        initializeGL();
void          paintEvent( QPaintEvent* e );
void          paintGL();
void          resizeGL( int w, int h );
void	        timerEvent( QTimerEvent *qte );

// *********************************
// Derived GMlib::GMWindow functions
void	        swapBuffers();
bool	        toggleRun();

private:
int           _timerID;
};
``````
GLWidget.cpp
GLWidget.h
Application.h
Application.cpp
main.cpp
0

LVL 33

Assisted Solution

pgnatyuk earned 400 total points
In the previous comment I took the source code from
TUTORIAL: Setting up a basic OpenGL application using Qt
http://episteme.hin.no/wiki/index.php/TUTORIAL:_Setting_up_a_basic_OpenGL_application_using_Qt

It uses GMLib.

If you don't want this library, take another tutorial and source code from there:
OpenGL
http://www.digitalfanatics.org/projects/qt_tutorial/chapter14.html

OpenGL tutorials are here:
http://nehe.gamedev.net/

nehewidget.h
nehewidget.cpp
ch11.h
main.cpp
0

Author Comment

Hi pgnatyuk,

I am realy glad for your posts and many thanks for that effort I will try to apply that tutorials and if I found any stack I will post it, but can you please tell me what is the correct section of this tech. I use to post like this question on Qt section , c++ and graphics as well.
0

LVL 33

Expert Comment

You need to pass these first tutorials. Then you will see that the questions are about OpenGL. C++, Qt, ... help you to wrap the OpenGL code. There is an OpenGL zone here on EE, you will meet very strong experts there.
0

LVL 12

Assisted Solution

HappyCactus earned 100 total points
You must enable the OpenGL in your .pro file.

QT += opengl

With that directive, the correct include path to Qt+OpenGl headers are appended to your makefile. Then, include  should work.
But again, see the tutorials. Since you are working with GMLib, that already support QT+OpenGL, maybe the GLWidget is already included or a GMWindow is already derived from a QGLWidget, so maybe you are wrong with a multiple inheritance.

0

Author Comment

Thanks for all and Thanks for ikework
I will post a specific question in OpenGl zone. and I have got a massive help from these zone
0

Author Closing Comment

Thank you
0

## Featured Post

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [sâ€¦
Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticallâ€¦
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.