Image 使用QT显示DICOM图像序列中的问题

Image 使用QT显示DICOM图像序列中的问题,image,qt,opengl,sequence,dicom,Image,Qt,Opengl,Sequence,Dicom,我在Linux[GCC编译器]中工作, 我正在使用Eclipse和CDT+QT进行编译 我需要显示序列的DICOM图像使用QT窗口和OpenGL函数 请让我知道哪个是显示图像序列的功能 我使用了3个函数 1) InitializeGL()初始化OpenGL函数。 2) 调整Glut中GLUTINITWindowsSize()的大小,而不是Glut中的GLUTINITWindowsSize()。 3) paintGL()而不是Glut中的glutDisplayFunc()。 4) updateGL

我在Linux[GCC编译器]中工作, 我正在使用Eclipse和CDT+QT进行编译 我需要显示序列的DICOM图像使用QT窗口和OpenGL函数 请让我知道哪个是显示图像序列的功能 我使用了3个函数 1) InitializeGL()初始化OpenGL函数。 2) 调整Glut中GLUTINITWindowsSize()的大小,而不是Glut中的GLUTINITWindowsSize()。 3) paintGL()而不是Glut中的glutDisplayFunc()。 4) updateGL()而不是Glut中的glutPostRedisplay()

另外,请让我知道哪些是QT中的Glut等效函数 glutMainLoop(); glutSwapBuffers(); glutInitDisplayMode(); glutIdleFunc(空闲);
glutInit(&argc,argv)

我想说Qt已经处理了gluswapbuffer、glutInitDisplayMode和glutInit,所以你不需要它们。 我也不确定你的函数映射是否正确,简单地说,Qt和Glut以不同的方式思考GL,因此你可能必须以相同的方式(以不同的方式思考),Qt方法几乎是自解释的。
我建议下载Kglingine或任何其他Qt+GL项目的代码,以便更好地了解其工作原理。

我认为Qt已经处理了gluSwapBuffers、glutInitDisplayMode和glutInit,所以您不需要它们。 我也不确定你的函数映射是否正确,简单地说,Qt和Glut以不同的方式思考GL,因此你可能必须以相同的方式(以不同的方式思考),Qt方法几乎是自解释的。
我建议您下载Kglingine或任何其他Qt+GL项目的代码,以便更好地了解其工作原理。

您应该能够通过简单地使用QGLWidget作为绘制设备轻松显示图像,这取决于您的特定用例,可能会简化您的实现。这将使用Qt中的OpenGL绘制引擎绘制图像。类似下面的内容应该允许您显示图像

class CustomWidget : public QGLWidget
{ 
public:
    CustomWidget(QWidget* parent=0) : QGLWidget(parent), pix("foo.jpg")
    {

    }

protected:
    void paintEvent(QPaintEvent *pe)
    {
        QPainter p(this);
        // maybe update the pixmap
        p.drawPixmap(this->rect(),pix);
    }

private:
    QPixmap pix;
};
如果需要将其放置在3D场景中,则可能需要将图像作为纹理加载。一些Qt OpenGL演示应该能够为您提供一个起点,例如“盒子”演示


您应该能够通过简单地使用QGLWidget作为绘制设备轻松显示图像,这取决于您的特定用例,可能会简化您的实现。这将使用Qt中的OpenGL绘制引擎绘制图像。类似下面的内容应该允许您显示图像

class CustomWidget : public QGLWidget
{ 
public:
    CustomWidget(QWidget* parent=0) : QGLWidget(parent), pix("foo.jpg")
    {

    }

protected:
    void paintEvent(QPaintEvent *pe)
    {
        QPainter p(this);
        // maybe update the pixmap
        p.drawPixmap(this->rect(),pix);
    }

private:
    QPixmap pix;
};
如果需要将其放置在3D场景中,则可能需要将图像作为纹理加载。一些Qt OpenGL演示应该能够为您提供一个起点,例如“盒子”演示