我正在创建一个继承自QWidget的自定义小部件my_widget。
在这里,我有一个标签,我想要应用QGraphicsDropShadowEffect,但它似乎不起作用,因为我没有看到任何阴影。
我的代码是用Python编写的,它是:
eff = QGraphicsDropShadowEffect()
self.my_widget_label.setGraphicsEffect(eff)我尝试了对此代码进行各种修改,但都无济于事。
在谷歌上做了彻底的搜索后,我遇到了许多类似的问题,但都没有答案。
可能的原因是什么?我怎样才能得到阴影?
发布于 2012-12-24 11:24:16
看看这对你是否有效:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class testShadow(QWidget):
def __init__(self, parent=None):
super(testShadow, self).__init__(parent)
self.resize(94, 35)
self.verticalLayout = QVBoxLayout(self)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QLabel(self)
self.label.setText("Text Label")
self.shadow = QGraphicsDropShadowEffect(self)
self.shadow.setBlurRadius(5)
self.label.setGraphicsEffect(self.shadow)
self.verticalLayout.addWidget(self.label)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = testShadow()
main.show()
sys.exit(app.exec_())

发布于 2012-12-22 05:29:26
在C++对我很管用。我在包含名为titleLabel的QLabel对象的QDialog中执行了以下操作。我在Windows XP计算机上使用Qt 4.8.4。
QGraphicsDropShadowEffect* eff = new QGraphicsDropShadowEffect(this);
eff->setBlurRadius(5);
titleLabel->setGraphicsEffect(eff);发布于 2012-12-24 11:35:50
我只尝试过在QGraphicsScene环境中使用它(并成功地使用了它)。这对我来说很有效,而试图在普通的QWidget上设置它实际上会导致整个应用程序崩溃:
from PyQt4 import QtGui
class Graphics(QtGui.QWidget):
def __init__(self):
super(Graphics, self).__init__()
layout = QtGui.QVBoxLayout(self)
layout.setMargin(0)
shad = QtGui.QGraphicsDropShadowEffect(self)
shad.setBlurRadius(5)
self.scene = QtGui.QGraphicsScene(self)
self.view = QtGui.QGraphicsView(self)
self.view.setScene(self.scene)
text = self.scene.addText("Drop Shadow!")
text.setGraphicsEffect(shad)
layout.addWidget(self.view)
if __name__ == "__main__":
app = QtGui.QApplication([])
main = Graphics()
main.show()
main.raise_()
app.exec_()https://stackoverflow.com/questions/13996130
复制相似问题