C++ Qt使用QGraphicsDropShadow为QLabel添加阴影效果

C++ Qt使用QGraphicsDropShadow为QLabel添加阴影效果,c++,C++,我必须在我的应用程序中为多个QLabel应用drop shadow。我使用了QGraphicsDropShadowEffect,如果我为一个QLabel添加它,它工作得很好。我尝试对两个QLabel应用相同的图形效果 QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(); effect->setColor(Qt::white); effect->setBlurRadius(0); effect->

我必须在我的应用程序中为多个QLabel应用drop shadow。我使用了QGraphicsDropShadowEffect,如果我为一个QLabel添加它,它工作得很好。我尝试对两个QLabel应用相同的图形效果

QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setColor(Qt::white);
effect->setBlurRadius(0);
effect->setXOffset(1);
effect->setYOffset(0);
QLabel* label = new QLabel();
label->setText("QLabel1");
label->setGraphicsEffect(effect);
QLabel* label2 = new QLabel();
label2->setText("QLabel2");
label2->setGraphicsEffect(effect);
在这种情况下,阴影效果仅应用于label2。 我尝试创建两个不同的QGraphicsDropShadowEffect对象,并用它们设置QLabel

QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setColor(Qt::white);
QLabel* label = new QLabel();
label->setText("QLabel1");
label->setGraphicsEffect(effect);
QGraphicsDropShadowEffect* effect1 = new QGraphicsDropShadowEffect();
effect1->setColor(Qt::white);
QLabel* label2 = new QLabel();
label2->setText("QLabel2");
label2->setGraphicsEffect(effect1);
在这种情况下,应用程序在QRasterPaintEngine::transformChanged()调用中崩溃

你知道如何解决这个问题吗?
我正在使用Qt5.3。

我只是想自己解决这个问题。虽然这个解决方案让我很痛苦,但它是我很快想到的最好的解决方案。使用QList在此处帮助您自己:

// List instances containing labels and drop shadows
QList<QLabel*> label_list_;
QList<QGraphicsDropShadowEffect*> shadow_list_;

// Get all UI labels and apply shadows
label_list_ = this->findChildren<QLabel*>();
foreach(QLabel *lbl, label_list_) {
    shadow_list_.append(new QGraphicsDropShadowEffect);
    shadow_list_.back()->setBlurRadius(10);
    shadow_list_.back()->setOffset(3, 3);
    lbl->setGraphicsEffect(shadow_list_.back());
}
//列出包含标签和阴影的实例
QList标签列表;
QList shadow_ulist_uu;
//获取所有UI标签并应用阴影
label_list_u=this->findChildren();
foreach(QLabel*lbl,标签列表){
阴影列表追加(新的QGraphicsDropShadowEffect);
阴影列表返回()->半径(10);
shadow_list_u.back()->setOffset(3,3);
lbl->setGraphicsEffect(shadow_list_uu.back());
}

如果您不希望列表中的所有UI标签,您可以使用
append

手动添加。您是否找到了解决此问题的方法?