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
效果实际上已被删除。因此,每次要设置效果时,都应该创建一个新的效果实例