QGraphicsView测试
【摘要】 想实现QOpenglWidget或者QGLWidget的透明效果,发现效果达不到预期,可以透明但是渲染顺序总是在其他普通控件之前.后来只能使用QGraphicView代替测试代码如下:class CEasyGLWidget : public QGLWidget{ Q_OBJECTpublic: CEasyGLWidget( const QGLFormat& format, QWi...
想实现QOpenglWidget或者QGLWidget的透明效果,发现效果达不到预期,可以透明但是渲染顺序总是在其他普通控件之前.
后来只能使用QGraphicView代替
测试代码如下:
class CEasyGLWidget : public QGLWidget
{
Q_OBJECT
public:
CEasyGLWidget( const QGLFormat& format, QWidget* parent = 0 );
protected:
virtual void initializeGL();
virtual void resizeGL( int w, int h );
virtual void paintGL();
virtual void keyPressEvent( QKeyEvent* e );
private:
bool prepareShaderProgram( const QString& vertexShaderPath,
const QString& geometryShaderPath,
const QString& fragmentShaderPath );
QOpenGLShaderProgram m_shader;
QOpenGLBuffer m_vertexBuffer;
bool inited;
};
class CEasyGraphicsItem : public QGraphicsItem
{
//Q_OBJECT
public:
CEasyGraphicsItem(QWidget *parent = 0);
~CEasyGraphicsItem();
virtual QRectF boundingRect() const;
virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
private:
CEasyGLWidget *m_OGLItem;
QPixmap m_Pixmap;
QImage m_Image;
};
class Md3View:public QGraphicsView,
protected QOpenGLFunctions
{
public:
Md3View( QWidget* pParent = 0 );
virtual ~Md3View( void );
private:
QGraphicsScene *m_pMainGraphicsScene;
//QGraphicsView *m_pMainGraphicsView;
QGLWidget *m_pMainGLWidget;
CEasyGraphicsItem *m_pItem;
CEasyGLWidget *m_OGLItem;
};
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)