QT(在QLabel中绘制背景透明的框线)
QLabel显示透明背景的框线
- 首先重写paintEvent事件,建立一个临时的QImage,色彩格式为
QImage::format_RGBA8888
,遍历每一个QImage的像素点,利用setPixelColor
将每一个像素点的颜色置为(255,255,255,0),即可完成QImage的透明化。然后在QImage上绘制框线或者其他图片,完成后将QImage加到QLabel中,即完成。
【QT(在QLabel中绘制背景透明的框线)】因为QLabel没有paintEvent事件,所以采用一个临时的QImage先绘制好图片再添加到QLabel中以实现再QLabel中绘图,当然,也可以将paintEvent事件安装到QLabel中,不过相对麻烦,故不采用。
- 代码
void THM_CT::paintEvent(QPaintEvent * event)
{
if (m_showFrameBoolValue =https://www.it610.com/article/= 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);
}
}
推荐阅读
- 热闹中的孤独
- 你到家了吗
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 闲杂“细雨”
- 杜月笙的口才
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 赢在人生六项精进二阶Day3复盘
- 祖母走了