bambooflow Note

空のウィジェット

最終更新:

Bot(ページ名リンク)

- view
メンバー限定 登録/ログイン

QtでOpenGL:空のウィジェット(QGLWidget)




QGLWidget


QtでOpenGLを描画するには、QGLWidgetを用います。
QGLWidgetは、次の抽象メソッドを持ちます。


メソッド 説明
initializeGL() OpenGLの初期化で呼ばれる
resizeGL() ウィンドウのリサイズが行われたとき呼ばれる
paintGL() 描画処理で呼ばれる


QGLWidgetの使い方


QGLWidgetを使うには、クラスを派生させます。
ここでは、QGLWidgetを派生させたGLWidgetの作り方を示します。


  • glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H
 
#include <QtOpenGL>
 
class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    GLWidget(QWidget *parent = 0);
    ~GLWidget();
 
protected:
    virtual void initializeGL();
    virtual void resizeGL( int w, int h );
    virtual void paintGL();
};
 
#endif // GLWIDGET_H
 
 

  • glwidget.cpp
#include "glwidget.h"
 
GLWidget::GLWidget(QWidget *parent):
    QGLWidget(parent)
{
}
 
GLWidget::~GLWidget()
{
}
 
void GLWidget::initializeGL()
{
    glClearColor(0.3, 0.3, 0.3, 1.0);
 
    // 初期化処理
}
 
void GLWidget::resizeGL( int w, int h )
{
    glViewport(0, 0, w, h);
 
    // リサイズ時処理
}
 
void GLWidget::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
 
    //描画処理
}
 
 


プロジェクトとmainの準備


GLWidgetクラスを作成しただけではプログラムは動きません。
あと、必要なのはmain関数とプロジェクトファイルです。

main関数は以下のように作ります。

  • main.cpp
#include <QtGui/QApplication>
#include "glwidget.h"
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
 
 
    GLWidget w;
    w.setGeometry(100, 100, 400, 300);
    w.show();
 
    return app.exec();
}
 


  • sample.pro
QT       += core gui opengl
 
TARGET = samole
TEMPLATE = app
 
 
SOURCES += main.cpp \
           glwidget.cpp
 
HEADERS  += glwidget.h
 
 

ここで、
QT += opengl
が必要です。


ビルドは、
% qmake
% make
です。


タグ:

Qt OpenGL
記事メニュー
ウィキ募集バナー