我必须根据某些条件对 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 文档中阅读有关 setGraphicsEffect 的内容:



所以当这条线运行时:

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

关于c++ - 多次应用 QGraphicsDropShadowEffect 会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27936950/

10-12 17:41