多次应用 QGraphicsDropShadowEffect 会使应用程序崩溃
Applying QGraphicsDropShadowEffect more than once crashes the app
我必须根据某些条件在 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
这段代码有什么问题?还有其他方法吗?
您可以阅读有关 setGraphicsEffect
的 Qt 文档:
Sets effect as the widget's effect. If there already is an effect
installed on this widget, QWidget will delete the existing effect
before installing the new effect.
所以当这一行是 运行 :
ui->btnAdd->setGraphicsEffect(NULL); //remove effect
effect
实际上被删除了。因此,每次要设置效果时都应该创建一个新实例。
我必须根据某些条件在 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
这段代码有什么问题?还有其他方法吗?
您可以阅读有关 setGraphicsEffect
的 Qt 文档:
Sets effect as the widget's effect. If there already is an effect installed on this widget, QWidget will delete the existing effect before installing the new effect.
所以当这一行是 运行 :
ui->btnAdd->setGraphicsEffect(NULL); //remove effect
effect
实际上被删除了。因此,每次要设置效果时都应该创建一个新实例。