QT:在QLabel中绘制背景透明的框线

2018-06-03  本文已影响0人  擎烛而走_b2ce

QLabel显示透明背景的框线

因为QLabel没有paintEvent事件,所以采用一个临时的QImage先绘制好图片再添加到QLabel中以实现再QLabel中绘图,当然,也可以将paintEvent事件安装到QLabel中,不过相对麻烦,故不采用。


void THM_CT::paintEvent(QPaintEvent * event)
{
    if (m_showFrameBoolValue == true) {
        QImage imgTmp(m_interceptWidth, m_interceptHeight, QImage::Format_RGBA8888);
        //imageTmp透明化
        for (int i = 0; i < m_interceptWidth; i++) {
            for (int j = 0; j < m_interceptWidth; j++) {
                QColor color(255, 255, 255, 0);
                imgTmp.setPixelColor(i, j, color);
            }
        }
        //绘制框线
        QPainter painter(&imgTmp);
        painter.setPen(QPen(Qt::blue, 5));
        painter.setBrush(Qt::NoBrush);
        painter.drawRect(0, 0, m_interceptWidth, m_interceptHeight);
        m_showImageIncrept->setPixmap(QPixmap::fromImage(imgTmp));
        m_showImageIncrept->resize(m_interceptWidth, m_interceptHeight);
        m_showImageIncrept->move(m_interceptX, m_interceptY);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读