2016-02-08 63 views
0

我想在我的graphicsView上添加一個模糊效果,但我必須觸發兩次應用效果的動作。第一次觸發它時,它在graphicsView的邊界線上應用效果,並在第二次觸發時應用它在scene.Here是我的代碼(有彩色化效果相同):如何在QGraphicsView上添加效果?

void MainWindow::on_actionBlur_triggered() 
{ 
    QGraphicsBlurEffect *a=new QGraphicsBlurEffect; 
    a->setBlurHints(QGraphicsBlurEffect::QualityHint); 
    a->boundingRectFor(ui->graphicsView->viewport()->rect()); 
    ui->graphicsView->setGraphicsEffect(a); 
} 

你能找出錯誤或建議FO這樣以不同的方式?

+0

可能錯過了無效或重新打電話?我認爲它沒有自動完成 – floppy12

+0

我試圖重繪和invalidateScene調用沒有結果。 –

回答

0

我找到了一個通過調用第二個遞歸觸發器的解決方案。在numOfTriggers中,我保存了我稱之爲的時間。

void Editor::on_actionBlur_triggered() 
{ 
    if(numOfTriggers<2){ 
     QGraphicsBlurEffect *a=new QGraphicsBlurEffect; 
     a->setBlurHints(QGraphicsBlurEffect::QualityHint); 
     a->boundingRectFor(ui->graphicsView->viewport()->rect()); 
     ui->graphicsView->setGraphicsEffect(a); 
     numOfTriggers++; 
     on_actionBlur_triggered(); 
    } 
    else{ 
     numOfTriggers=0; 
    } 
} 
0

我有另一個想法:你應該通過的QGraphicsView您QGraphicsBlurEffect在構造函數。 QGraphicsBlurEffect * a = new QGraphicsBlurEffect(ui-> graphicsView);

如果不工作,請嘗試使用mainWindow或「this」。