如何在 QGraphicsView 上添加效果

How to add an effect on QGraphicsView?

本文关键字:添加 QGraphicsView      更新时间:2023-10-16

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

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

你能发现错误或提出不同的方法来做到这一点吗?

我通过递归调用触发器找到了解决方案。在 numOfTrigger 中,我保存了我调用它的时间。

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;
    }
}

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

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

尝试使用您的主窗口或"this",如果不起作用。