opengl跟Qt5.0.2

opengl和Qt5.0.2
openGL的初学者,尝试把opengl与Qt结合

程式目的 : 画一个三角形
平台 : mac osx 10.8.3
编译器 : clang3.2

问题有二
1 : 无法显示三角形
2 : 关闭视窗后程式不会跟着关闭

.hpp

#include <QGLWidget>

#include <QtGui/QOpenGLFunctions>
#include <QtGui/QOpenGLShaderProgram>

class QWidget;

class ch1HelloTriangle : public QGLWidget, protected QOpenGLFunctions
{
    Q_OBJECT
public:
    explicit ch1HelloTriangle(QWidget *parent = 0);

protected:
    virtual void initializeGL();
    void initShaders();
    void InitializeVertexBuffer();

    virtual void resizeGL(int w, int h);
    virtual void paintGL();

private:
    QOpenGLShaderProgram program;

    GLuint positionBufferObject;
};


.cpp

#include <locale.h>

#include <QWidget>

#include "ch1HelloTriangle.hpp"

namespace
{

float const vertexPositions[] = {
    0.75f,  0.75f, 0.0f, 1.0f,
    0.75f, -0.75f, 0.0f, 1.0f,
    -0.75f, -0.75f, 0.0f, 1.0f,
};

}

ch1HelloTriangle::ch1HelloTriangle(QWidget *parent) :
    QGLWidget(parent)
{
}

void ch1HelloTriangle::initializeGL()
{
    initializeOpenGLFunctions();
    InitializeVertexBuffer();
    initShaders();
}

void ch1HelloTriangle::initShaders()
{
    // Override system locale until shaders are compiled
    setlocale(LC_NUMERIC, "C");

    // Compile vertex shader
    if (!program.addShaderFromSourceCode(QOpenGLShader::Vertex,
                                         "attribute vec4 position;\n"
                                         "void main()\n"
                                         "{\n"
                                         "   gl_Position = position;\n"
                                         "}\n"))
    {
        close();
    }