如何在QGraphicsView上添加效果?

时间:2016-02-08 22:39:48

标签: c++ qt image-editing

我正在尝试在我的graphicsView上添加模糊效果,但我必须触发动作两次才能应用效果。第一次触发它时,它会将效果应用于graphicsView的边线和第二个触发器应用它在现场。这是我的代码(与着色效果相同):

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

你能否发现错误或提出不同的做法?

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

我有另一个想法:你应该在构造函数中将QGraphicsView传递给你的QGraphicsBlurEffect。

QGraphicsBlurEffect * a =新的QGraphicsBlurEffect(ui-&gt; graphicsView);

尝试使用mainWindow或“this”,如果不能正常工作。