Qt QGraphicsDropShadowEffect在QLable中工作不正常
我试图使用QGraphicsDropShadowEffect在qlabel中添加阴影效果。所以我添加了这样的效果 QGraphicsDropShadowEffect*效果=新的QGraphicsDropShadowEffect(); 效果->半径(0); 效果->设置颜色(QColor(255,0,0)); 效果->设置偏移量(1,1); label1->setGraphicsEffect(效果) 但是,对于像spinbox这样的其他小部件来说,这种效果看起来很奇怪,因为它工作正常 这是qlabel外观的图像快照 右边的是一个qspinbox,它可以正常工作,但是对于qlable,它看起来很奇怪。它的行为与父对象中所有标签的行为相同 但是如果我使用代码并制作一个示例应用程序,它就会正常工作 示例应用程序Qt QGraphicsDropShadowEffect在QLable中工作不正常,qt,qlabel,Qt,Qlabel,我试图使用QGraphicsDropShadowEffect在qlabel中添加阴影效果。所以我添加了这样的效果 QGraphicsDropShadowEffect*效果=新的QGraphicsDropShadowEffect(); 效果->半径(0); 效果->设置颜色(QColor(255,0,0)); 效果->设置偏移量(1,1); label1->setGraphicsEffect(效果) 但是,对于像spinbox这样的其他小部件来说,这种效果看起来很奇怪,因为它工作正常 这是qlab
QApplication app(argc,argv);
QMainWindow* window = new QMainWindow();
QWidget* centralWidget = new QWidget();
window->setCentralWidget(centralWidget);
window->setWindowTitle("QLabel With Shadow");
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QLabel* label = new QLabel();
sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
label->setSizePolicy(sizePolicy);
label->setMinimumSize(QSize(0, 0));
label->setMaximumSize(QSize(16777215, 16777215));
label->setStyleSheet(QString::fromUtf8("font-size: 12px,0.2em; \n"
"font-family: Segoe Regular; \n"
"color: rgb(0, 0, 0);"));
label->setText(QApplication::translate("EyGuiProgresColorUi", "Contrast", 0, QApplication::UnicodeUTF8));
label->setParent(centralWidget);
QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(0);
effect->setColor(QColor(255, 0, 0));
effect->setOffset(1,1);
label->setGraphicsEffect(effect);
window->show();
return app.exec();
这个示例应用程序提供了我所需要的。请帮帮我。我知道这是一个很老的话题。然而,互联网上没有提供任何答案,Qt也没有对这种意外的非标准行为发表任何评论。关于这一点,我有完全相同的问题。因此,我将提供一个对我有效的解决方案,至少希望将来的其他开发人员能够找到这个解决方案 我的问题是在元素上动态设置样式表而不指定选择器。当您这样做,并添加QGraphicsDropShadowEffect作为效果时,就会出现这种奇怪的行为。因此,为了避免在这种奇怪的情况下发现,我必须确保以指定所有选择器的方式设置样式表 例如,如果您想为QLabel(让我们假设对象名为myLabel)小部件设置颜色,那么您可以通过两种不同的方式进行设置:
// Without specifying selector
label->setStyleSheet("color:#000000;");
// By specifying selector
label->setStyleSheet("#myLabel{color:#000000;}");
在这两种情况下,您将得到相同的结果。然而,后者不会破坏QGraphicsDropShadowEffect效果。我相信这个问题的作者也有同样或类似的问题。我想你正在使用Mac:“注意:Mac不支持图形效果,因此它们不会对小部件的呈现造成任何差异。”否。它是windows 7,带有64位pc和qt-4.8.4以及更多。一个示例应用程序对我来说工作正常。它位于一个滚动区域。。