我试图使用QGraphicsDropShadowEffect在qlabel中添加阴影效果。所以我添加了这样的效果。
QGraphicsDropShadowEffect * effect = new QGraphicsDropShadowEffect(); 效果 - > setBlurRadius(0); effect-> setColor(QColor(255,0,0)); 效果 - > setOffset(1,1); label1-> setGraphicsEffect(效果);
但效果看起来很怪异,因为像Spinbox这样的其他小部件正常工作。
这是qlabel看起来的图像。
正确的是qspinbox,它适用于它但是对于qlable,它看起来很奇怪。它的行为与父项中的所有标签相同。
但是,如果我接受代码并制作示例应用程序,它可以正常工作..
示例应用
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();
此示例应用程序为我提供了我需要的内容。请帮帮我..
答案 0 :(得分:1)
我知道这是一个很老的话题。但是,互联网上没有提供任何答案,Qt也没有说明这种意外和非标准的行为。更多的是,我有完全相同的问题。因此,我将提供一个对我有用的解决方案,至少希望将来其他开发人员能够找到这个解决方案。
我的问题是在没有指定选择器的情况下动态设置样式表。当你这样做,并且你正在添加 QGraphicsDropShadowEffect 作为一个效果,那么你会得到这种奇怪的行为。所以,为了不在这种奇怪的情况下找到,我必须确保我设置样式表,以便指定所有选择器。
例如,如果要为QLabel设置颜色(让我们说对象名称是 myLabel )小部件,那么您可以通过两种不同的方式进行操作:
// Without specifying selector
label->setStyleSheet("color:#000000;");
// By specifying selector
label->setStyleSheet("#myLabel{color:#000000;}");
在两种方式中,您都会得到相同的结果。但是,后者不会破坏 QGraphicsDropShadowEffect 效果。我相信这个问题的作者有同样或类似的问题。