我正在尝试在我的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);
}
你能否发现错误或提出不同的做法?
答案 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”,如果不能正常工作。