• 120阅读
  • 2回复

[提问]QT 怎么在 QLabel 上重绘(本问题已解决) [复制链接]

上一主题 下一主题
离线介农酥
 

只看楼主 倒序阅读 楼主  发表于: 06-29
我需要根据不同字符串画对应的一维码,一维码是画在QLabel上的,如图



重绘的方法是在事件过滤器上eventFilter绘制的(我也是从网上看的,你们有没有更好的办法,网上好像还有事件的方法)

bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
{
    if (obj == ui->labelShow && ev->type() == QEvent::Paint) {
        paintLable();
    }

    return QWidget::eventFilter(obj,ev);
}
我现在另设一个字符,如1234567,
我这样做好像没用:

sourceStr = "1234567";
ui->labelShow->repaint();

重绘,好像没用。
谢谢!
在线20091001753

只看该作者 1楼 发表于: 06-29
简单来说,你的需求就是让 QLable 显示图片。

QLable 支持显示图片:setPicture 与 setPixmap

百度 QPixmap 与 QPicture 的区别就好。

当然也可以使用 QImage 例如:

ui->label->setPixmap( QPixmap::fromImage( image ) );
(づ ̄ 3 ̄)づ
离线liudianwu

只看该作者 2楼 发表于: 06-30
如果采用事件过滤器的方式,前提是你要安装事件过滤器。
ui->label->installEventFilter(this);
专业各种自定义控件编写+UI定制+输入法定制+视频监控+工业控制+仪器仪表+嵌入式linux+各种串口网络通信,童叟无欺,量大从优,欢迎咨询购买定制!你正好需要,我正好专业!QQ:517216493 微信:feiyangqingyun Email:feiyangqingyun@163.com
群号:853086607(Qt交流大会,雨田哥群,不定期上传作品,解答作品中相关问题!) 312125701(QtQML多多指教群) 46679801(Qt开发技术交流群-5000人大群)
离线介农酥

只看该作者 3楼 发表于: 06-30
回 liudianwu 的帖子
liudianwu:如果采用事件过滤器的方式,前提是你要安装事件过滤器。
ui->label->installEventFilter(this); (2020-06-30 08:40) 

不好意思,战略失误,我在绘制函数里,把字符串写死了,所以再次调用的时候,还是显示原来的,但是有一个很重要的问题,就是为什么每次我隐藏或者调整大小或者显示,会多次调用绘制事件,比如我,我隐藏框,不应该调用一次码,我显示处理,调用一次。
快速回复
限100 字节
 
上一个 下一个