Qt5 painter在控件上繪圖無反應(利用eventFilter實現控件內容繪製)

1、爲控件安裝事件過濾器

ui->lblImage->installEventFilter(this);//安裝事件過濾器

2、在頭文件中添加繪製函數和事件過濾函數

bool eventFilter(QObject *obj, QEvent *event);//事件過濾
void labelPaint(QImage image);繪製函數

3、函數實現

bool TraceabilitySystem::eventFilter(QObject *obj, QEvent *event)
{
    if(obj==ui->lblImage && event->type()==QEvent::Paint)//判斷是否是lblImage控件,是否是繪製事件
    {
        labelPaint(drawImage);//繪製
    }
   return QWidget::eventFilter(obj,event);
}
void TraceabilitySystem::labelPaint(QImage image)
{
    QPainter pp(ui->lblImage);
    QImage res=image.scaled(ui->lblImage->size(),Qt::IgnoreAspectRatio);//拉伸圖片
    pp.begin(&res);
    pp.drawImage(0, 0, res);  
    pp.end();
    update();

4、效果如下

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章