2011-06-22 60 views
0

有没有一种方法可以在不同级别的不透明度下在Qt应用上投影PNG图像? (例如0.0和1.0之间的值,其中0.0完全不可见)。Qt投影不同级别的不透明度的PNG图像

+0

你是什么项目呢?画出一切?在一切背后画吗?作为小部件的一部分绘制?任何这些都是可能的。 –

+0

绘制在小部件的顶部。是。 – JasonGenX

回答

1

创建一个位于所有其他要覆盖的顶部的小部件。用所需的不透明度在paintEvent函数中绘制图像。

Overlay.h

#include <QWidget> 
#include <QPixmap> 

class Overlay : public QWidget 
{ 
    Q_OBJECT 

public: 
    Overlay(QWidget *parent = NULL) : QWidget(parent), opacity(0) 
    { 
    } 

    void SetPixmap(const Pixmap& p) 
    { 
     pixmap = p; 
     update(); 
    } 

    void SetOpacity(qreal o) 
    { 
     opacity = o; 
     update(); 
    } 

protected: 
    virtual void paintEvent(QPaintEvent*) 
    { 
     QPainter paint(this); 
     paint.setOpacity(opacity); 
     paint.drawPixmap(rect(), pixmap); 
    } 

private: 
    QPixmap pixmap; 
    qreal opacity; 
} 
0

图像元素是项目元素的子类。项目元素具有不透明属性。

+0

对Qt(C++)应用程序框架或QT(Quicktime)的这种响应? –

+0

Qt(C++ UI框架) – JasonGenX