不止一次应用QGraphicsDropShadowEffect会使应用程序崩溃

时间:2015-01-14 06:24:58

标签: c++ qt qt5

我必须根据某些条件对QPushButton应用阴影效果。我必须删除阴影效果,如果某些条件为false并再次添加,如果条件变为true。我试图使用以下代码,但程序崩溃。

QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(1);
effect->setOffset(2,2);
ui->btnAdd->setGraphicsEffect(effect);
ui->btnAdd->setGraphicsEffect(NULL); //remove effect
ui->btnAdd->setGraphicsEffect(effect); //add again

这段代码有什么问题?还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您可以在Qt文档中阅读setGraphicsEffect

  

将效果设置为小部件的效果。如果已经有效果   安装在这个小部件上,QWidget将删除现有的效果   在安装新效果之前。

所以当这一行运行时:

ui->btnAdd->setGraphicsEffect(NULL); //remove effect

effect实际上已被删除。因此,每次要设置效果时都应该创建一个新的效果实例。