2

my_widgetから継承するカスタムウィジェットを作成していますQWidget

ここに貼り付けたいラベルがありますQGraphicsDropShadowEffectが、影が見えないので動かないようです。

私のコードはPythonであり、次のとおりです。

eff = QGraphicsDropShadowEffect()
self.my_widget_label.setGraphicsEffect(eff)

私はこのコードにさまざまな変更を加えてみましたが、役に立ちませんでした。

グーグルで徹底的に検索した後、私は答えのない多くの同様の質問に出くわしました。

原因は何でしょうか?どうすれば影を手に入れることができますか?

4

3 に答える 3

4

C++で動作します。。という名前QDialogのオブジェクトを含むオブジェクトで次のことを行いました。WindowsXPコンピュータでQt4.8.4を使用しています。QLabeltitleLabel

QGraphicsDropShadowEffect* eff = new QGraphicsDropShadowEffect(this);
eff->setBlurRadius(5);
titleLabel->setGraphicsEffect(eff);
于 2012-12-21T21:29:25.937 に答える
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_())

画像

于 2012-12-24T03:24:15.923 に答える
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_()
于 2012-12-24T03:35:49.957 に答える