如何在 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",如果不起作用。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- 缩放QGraphicsView而不缩放已添加到其中的QWidget
- 在另一个类的表单上添加 QGraphicsView
- 将鼠标单击事件添加到使用QtCreator创建的QGraphicsView中
- 如何在 QGraphicsView 上添加效果
- 将QGraphicsView添加到QBoxLayout
- 如何通过鼠标单击在QGraphicsView中选择位置并添加项目