Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QGraphicsDropShadowEffect在QLable中工作不正常_Qt_Qlabel - Fatal编程技术网

Qt QGraphicsDropShadowEffect在QLable中工作不正常

Qt QGraphicsDropShadowEffect在QLable中工作不正常,qt,qlabel,Qt,Qlabel,我试图使用QGraphicsDropShadowEffect在qlabel中添加阴影效果。所以我添加了这样的效果 QGraphicsDropShadowEffect*效果=新的QGraphicsDropShadowEffect(); 效果->半径(0); 效果->设置颜色(QColor(255,0,0)); 效果->设置偏移量(1,1); label1->setGraphicsEffect(效果) 但是,对于像spinbox这样的其他小部件来说,这种效果看起来很奇怪,因为它工作正常 这是qlab

我试图使用QGraphicsDropShadowEffect在qlabel中添加阴影效果。所以我添加了这样的效果

QGraphicsDropShadowEffect*效果=新的QGraphicsDropShadowEffect(); 效果->半径(0); 效果->设置颜色(QColor(255,0,0)); 效果->设置偏移量(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();

这个示例应用程序提供了我所需要的。请帮帮我。

我知道这是一个很老的话题。然而,互联网上没有提供任何答案,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以及更多。一个示例应用程序对我来说工作正常。它位于一个滚动区域。。