Qt投影具有不同不透明度的PNG图像

时间:2011-06-22 21:48:54

标签: qt

有没有办法在具有不同不透明度的Qt应用程序上投影PNG图像? (例如0.0到1.0之间的值,其中0.0是完全不可见的)。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

Image Element是Item Element的子类。 Item Element具有不透明度属性。