2、选择QT,选择Qt设计师界面类,选择Choose。
3、选择需要就界面类,选择下一步。
4、输入新建工程的名称,选择下一步,完成。
我自己学QT时的笔记,供参考QT下构建OPENGL开发环境
首先在工程文件下加入环境配置 .pro
QT += qt3support //支持qt3支持
QT += opengl //OPENGL库支持
nehewidget.h文件
#include <qgl.h> //要加入的库
#include <QtGui/qevent.h> //要加入的库
class NeHeWidget : public QGLWidget //任何OPENGL的窗体都要从QGLWidget类中派生
{
Q_OBJECT //宏定义只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制
public:
NeHeWidget( QWidget* parent = 0, const char* name = 0, bool fs = false )
~NeHeWidget()
protected:
void initializeGL() //初始化窗口
void paintGL() //画窗口
void resizeGL( int width, int height ) //重置窗口
void keyPressEvent( QKeyEvent *e ) //按钮事件
protected:
bool fullscreen //全屏事件
}
源文件
NeHeWidget::NeHeWidget( QWidget* parent, const char* name, bool fs )
: QGLWidget( parent, name ) //二个QGLWidget 需要的构造参数
{
fullscreen = fs
setGeometry( 0, 0, 640, 480 ) //设置大小
setCaption( "NeHe's OpenGL Framework" )
if ( fullscreen )
showFullScreen() //设置全局
}
NeHeWidget::~NeHeWidget()
{
}
void NeHeWidget::initializeGL()
{
glShadeModel( GL_SMOOTH )
glClearColor( 0.0, 0.0, 0.0, 0.0 )
glClearDepth( 1.0 )
glEnable( GL_DEPTH_TEST )
glDepthFunc( GL_LEQUAL )
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST )
}
void NeHeWidget::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )
glLoadIdentity()
}
void NeHeWidget::resizeGL( int width, int height )
{
if ( height == 0 )
{
height = 1
}
glViewport( 0, 0, (GLint)width, (GLint)height )
glMatrixMode( GL_PROJECTION )
glLoadIdentity()
gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 )
glMatrixMode( GL_MODELVIEW )
glLoadIdentity()
}
void NeHeWidget::keyPressEvent( QKeyEvent *e )
{
switch ( e->key() )
{
case Qt::Key_F2:
fullscreen = !fullscreen
if ( fullscreen )
{
showFullScreen()
}
else
{
showNormal()
setGeometry( 0, 0, 640, 480 )
}
updateGL()
break
case Qt::Key_Escape:
close()
}
}
main.cpp
#include <qapplication.h>
#include <qmessagebox.h>
#include "nehewidget.h"
int main( int argc, char **argv )
{
bool fs = false
QApplication a(argc,argv)
switch( QMessageBox::information( 0,
"Start FullScreen?",
"Would You Like To Run In Fullscreen Mode?",
QMessageBox::Yes,
QMessageBox::No | QMessageBox::Default ) )
{
case QMessageBox::Yes:
fs = true
break
case QMessageBox::No:
fs = false
break
}
NeHeWidget w( 0, 0, fs )
a.setMainWidget( &w )
w.show()
return a.exec()
}
//QT中用OPENGL画图时,记得用UPDATE(),更新数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)