用透明层覆盖QLabel

时间:2014-05-04 08:46:53

标签: c++ qt

我正在寻找覆盖显示带透明色图像的QLabel的简单方法,例如QColor(0, 0, 0, 220)

这是我所做的QLabel子类的代码:

MyLabel::MyLabel(QWidget* parent): QLabel(parent){

}


void MyLabel::paintEvent(QPaintEvent* _event)
{
    QPainter p;
    p.begin(this);

    // bugs here: "Recursive repaint detected"
    p.drawPixmap(0, 0, width(), height(), this->grab() );  <--

    p.setBrush(QBrush(QColor(0, 0, 0, 220)));
    p.drawRect(0, 0, width(), height());
    p.end();

    QWidget::paintEvent(_event);
}

是否有必要继承QLabel来做这些事情?

0 个答案:

没有答案