设为首页 加入收藏

TOP

深入理解Qt多线程(三)
2014-11-23 21:34:05 来源: 作者: 【 】 浏览:28
Tags:深入 理解 线程
ight glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glEnd(); // we're done with the polygon (smooth color interpolation) glw->swapBuffers(); msleep(50); qDebug(rendering); } }

GLWidget也要进行相应的修改:

glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include 
  
   
#include glthread.h
#include 
   
     class GLWidget : public QGLWidget { public: GLWidget(QWidget *parent); void startRendering(); void stopRendering(); protected: void resizeEvent(QResizeEvent *evt); void paintEvent(QPaintEvent *); void closeEvent(QCloseEvent *evt); GLThread glt; }; #endif // GLWIDGET_H 
   
  

glwidget.cpp

#include glwidget.h

GLWidget::GLWidget(QWidget *parent)
       : glt(this)
   {
       setAutoBufferSwap(false);
       resize(320, 240);
   }

   void GLWidget::startRendering()
   {
        glt.start();
   }

   void GLWidget::stopRendering()
   {
       glt.stop();
       glt.wait();
   }

   void GLWidget::resizeEvent(QResizeEvent *evt)
   {
       glt.resizeViewport(evt->size());
   }

   void GLWidget::paintEvent(QPaintEvent *)
   {
       // Handled by the GLThread.
   }

   void GLWidget::closeEvent(QCloseEvent *evt)
   {
       stopRendering();
       QGLWidget::closeEvent(evt);
   }

注意这里用到了C++的一个小技巧,前向声明。当两个类要互相引用的时候不能够互相包含头文件,在一个类的头文件中,必须用Class + 类名作为前向声明。而在这个类的cpp中要访问另一个类的具体方法的话,必须包含那个类的头文件。

这里还涉及到数据的访问。最开始的例子用的是信号槽的方式进行访问,而这里直接使用的指针进行访问。

渲染结果:一个不断旋转的正方形,(假装看见了...)

/

线程安全

待研究

一些琐碎

待研究

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言字符串操作函数 下一篇2006 ACM Northwestern European ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: