如何在 QGraphicsView 上添加效果?
Posted
技术标签:
【中文标题】如何在 QGraphicsView 上添加效果?【英文标题】:How to add an effect on QGraphicsView? 【发布时间】:2016-02-08 22:39:48 【问题描述】:我正在尝试在我的 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);
你能找出错误或提出不同的方法吗?
【问题讨论】:
可能缺少无效或重绘调用?我认为它不是在那里自动完成的 我尝试了 repaint 和 invalidateScene 调用,但没有结果。 【参考方案1】:我通过递归调用触发器一秒钟找到了解决方案。在 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;
【讨论】:
【参考方案2】:我有另一个想法:你应该在构造函数中将 QGraphicsView 传递给你的 QGraphicsBlurEffect。
QGraphicsBlurEffect* a = new QGraphicsBlurEffect(ui->graphicsView);
试试你的 mainWindow 或者“this”,如果不工作的话。
【讨论】:
以上是关于如何在 QGraphicsView 上添加效果?的主要内容,如果未能解决你的问题,请参考以下文章