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)
{
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、效果如下