QT在label上透明绘图(二)

本文介绍了如何在QT应用中使用TransparentLabel类添加双层透明度控制,通过doublespinbox调整参数,同时强调了全局布局的重要性以获取准确的位置坐标。

前面步骤参考前一篇文章
QT在label上透明绘图
一、给TransparentLabel类添加double transparency;变量,
二、ui添加doublespinbox,调整透明参数

void MainWindow::on_doubleSpinBox_valueChanged(double arg1)
{
    transparentLabel->transparency=arg1;
    transparentLabel->update();
}

三、在布局时,获取label位置,一定要全局布局一次,不然获取的x,y一直为0;

Qtlabel标签上绘图有多种方法,以下为你详细介绍: ### 直接在重写的`paintEvent`函数中绘图 在`transparentlabel.cpp`中实现构造函数和重绘函数,示例代码如下: ```cpp #include "transparentlabel.h" TransparentLabel::TransparentLabel() { } TransparentLabel::TransparentLabel(QWidget* parent):QLabel(parent){ } void TransparentLabel::paintEvent(QPaintEvent *){ // 读取图片路径 QString imagePath = "D:\\picture\\ming3.png"; // 读取图片 QPixmap pixmap(imagePath); // 获取当前label的大小 QRect rect = this->geometry(); // 将图像大小缩放适合label QPixmap scaledPixmap = pixmap.scaled(QSize(rect.width(), rect.height())); // 在label绘图 QPainter painter(this); // 设置透明度 painter.setOpacity(0.4); // 绘图 painter.drawPixmap(0, 0, scaledPixmap); // 将此label放在最上层 this->raise(); } ``` 上述代码在`paintEvent`函数中完成了在`label`上绘制图片的操作,包括读取图片、调整大小、设置透明度等步骤 [^2]。 ### 动态调整透明绘图 可以给自定义的`TransparentLabel`类添加`double transparency;`变量,通过`ui`的`doublespinbox`调整透明参数,示例代码如下: ```cpp // 在MainWindow类中 void MainWindow::on_doubleSpinBox_valueChanged(double arg1) { transparentLabel->transparency = arg1; transparentLabel->update(); } ``` 此方法可以实现动态调整在`label`上绘图透明度 [^3]。 ### 绘制图形 利用`QPainter`在`label`上绘制图形,示例代码如下: ```cpp // 设置布大小以及绘图格式,绘图格式可在Qt助手中查看 QImage img(600, 600, QImage::Format_RGB32); // 填充色为白色,默认为黑色 img.fill(Qt::white); QPainter painter(&img); // 笔颜色 painter.setPen(Qt::green); // 圆 painter.drawEllipse(QPoint(100, 100), 100, 100); img.save("C:\\Users\\14725\\Desktop\\img.png"); ``` 该代码展示了如何使用`QPainter`在`QImage`上绘制圆形,并将绘制结果保存为图片 [^4]。 ### 自定义`QLabel`类绘图 可以构建自定义的`QLabel`类用于绘图,示例如下: ```cpp class DrawGraphLab : public QLabel { Q_OBJECT public: explicit DrawGraphLab(QWidget* parent = 0); }; ``` 通过自定义`QLabel`类,可以在其中重写绘图相关的函数,实现特定的绘图需求 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值