1

我正在尝试在 Qt 中添加 a QGraphicsEffectQAbstractItemView可能是 a QListView, QTableView,它们应该是相似的)(在 Python 2.7 中使用 PySide2,但应该适用于任何带有 Qt 的语言)。

我怀疑由于项目视图小部件使用渲染委托等在每个项目的基础上呈现自己的方式,它们不会很好地发挥作用并且没有解决方案。我找不到对它的引用,它在文档中明确不起作用,所以它似乎应该起作用(我的意思是,它们是 的子类QWidget,它确实支持QGraphicsEffects。似乎在实现/文档中可能存在疏忽)。任何人都可以确认或帮助正确的方法或解决方法吗?

演示模糊效果的示例:

from PySide2 import QtWidgets, QtGui, QtCore

lw = QtWidgets.QListWidget()
lw.addItems(["dog", "cat", "fish", "platypus"])
lw.show()

ge = QtWidgets.QGraphicsBlurEffect()
lw.setGraphicsEffect(ge)
ge.setBlurRadius(20)

btn = QtWidgets.QPushButton("so fuzzy!")
btn.show()

ge = QtWidgets.QGraphicsBlurEffect()
btn.setGraphicsEffect(ge)
ge.setBlurRadius(20)

截屏:

在此处输入图像描述

4

1 回答 1

2

您必须将效果应用于视口:

from PySide2 import QtWidgets

app = QtWidgets.QApplication()

lw = QtWidgets.QListWidget()
lw.addItems(["dog", "cat", "fish", "platypus"])
lw.show()

ge = QtWidgets.QGraphicsBlurEffect()
lw.viewport().setGraphicsEffect(ge)
ge.setBlurRadius(20)

btn = QtWidgets.QPushButton("so fuzzy!")
btn.show()

ge2 = QtWidgets.QGraphicsBlurEffect()
btn.setGraphicsEffect(ge2)
ge2.setBlurRadius(20)

app.exec_()
于 2020-08-23T07:59:13.193 回答