Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多次应用QGraphicsDropShadowEffect会使应用程序崩溃_C++_Qt_Qt5 - Fatal编程技术网

C++ 多次应用QGraphicsDropShadowEffect会使应用程序崩溃

C++ 多次应用QGraphicsDropShadowEffect会使应用程序崩溃,c++,qt,qt5,C++,Qt,Qt5,根据某些条件,我必须在QPushButton上应用阴影效果。如果某个条件为假,我必须移除阴影效果,如果该条件为真,我必须再次添加阴影效果。我试图使用以下代码,但程序崩溃 QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect(); effect->setBlurRadius(1); effect->setOffset(2,2); ui->btnAdd->setGraphicsEffect(effe

根据某些条件,我必须在
QPushButton
上应用阴影效果。如果某个条件为假,我必须移除阴影效果,如果该条件为真,我必须再次添加阴影效果。我试图使用以下代码,但程序崩溃

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

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

您可以在Qt文档中阅读有关设置图形效果的内容:

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

因此,当这条线运行时:

ui->btnAdd->setGraphicsEffect(NULL); //remove effect
效果实际上已被删除。因此,每次要设置效果时,都应该创建一个新的效果实例