我正在创建一个继承自my_widget
。
QWidget
在这里,我有一个标签,我想申请QGraphicsDropShadowEffect
但是它似乎没有用,因为我没有看到任何阴影。
我的代码是Python,它是:
eff = QGraphicsDropShadowEffect()
self.my_widget_label.setGraphicsEffect(eff)
我尝试了对此代码进行各种更改但无济于事。
在Google上进行搜索后,我遇到了许多类似的问题而没有答案。
可能是什么原因?我怎样才能获得影子?
答案 0 :(得分:3)
在C ++中为我工作。我在包含名为QDialog
的{{1}}对象的QLabel
中执行了以下操作。我在Windows XP计算机上使用Qt 4.8.4。
titleLabel
答案 1 :(得分:2)
看看这是否适合你:
#!/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_())
答案 2 :(得分:2)
我只在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_()