0

我正在尝试在我的 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);
}

你能发现错误或提出不同的方法吗?

4

2 回答 2

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;
    }
}
于 2016-02-09T02:32:22.140 回答
0

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

QGraphicsBlurEffect* a = new QGraphicsBlurEffect(ui->graphicsView);

如果不起作用,请尝试使用您的 mainWindow 或“this”。

于 2016-02-09T08:01:14.577 回答