2011-09-28 8 views
1
void MainWindow::save() 
{ 
    QGraphicsPixmapItem *gpx = new QGraphicsPixmapItem(QPixmap::fromImage(_im)); 
    QGraphicsBlurEffect *effect = new QGraphicsBlurEffect; 
    effect->setBlurHints(QGraphicsBlurEffect::QualityHint); 
    effect->setBlurRadius(20); 
    gpx->setGraphicsEffect(effect); 
    _gpx = gpx; 
    _image_label->setPixmap(gpx->pixmap()); 
    _image_label->adjustSize(); 
    MainWindow::repaint(); 
} 

기능 이름에 신경 쓰지 마세요. 테스트 버튼 일뿐입니다. 그것을 누를 때, 이미지 레이블에있는 이미지를 그대로 놔둔 채 아무것도 보지 않았습니다. 내가 Qt에서 낮은 expirience을 가지고, 그래서 내가 여기 내 문제가 무엇인지 이해할 수 없어 어떻게 그것을 직접 디버깅 할 수 있습니다.QGraphicsPixmapItem에서 효과를 적용하는 방법은 무엇입니까?

+0

솔루션 : 당신의 의도는 다음이 항목을 대체하는 경우

당신은 같은 것을 할 필요가있다. – Lertmind

+0

글쎄,이 이미지에 작동하지 않습니다 ... – Dracontis

답변

0

내가 작성한 코드를 수집 할 수 있으므로 회원 변수 _gpx은 이미 사용자의 씬에 추가 한 QGraphicsPixmapItem입니다. 이 함수가 호출 될 때마다 당신은 이 아닌 완전히 새로운 QGraphicsItem으로 멤버 변수를 대체하고 있습니다 (그리고 누출 될 가능성이 있습니다).이 장면에 추가됩니다. 단지 라벨에 사용 - 효과를 구현하는 쉬운 방법 :

scene->removeItem(_gpx); 

... // (contents of your save() function) 

scene->addItem(_gpx); 
관련 문제