有谁知道如何为QListWidget设置背景文字?
我以前用过
self.setStyleSheet("background-image:myBgImg.png")
但我想在应用中创建文字。即:
bgImage = QImage()
bgImage = bgImage.setText( "textKey" , "This is some background text." )
palette = QPalette()
palette.setBrush(self.listWidget.backgroundRole(), QBrush( bgImage ))
self.listWidget.setPalette(palette)
虽然这似乎不起作用。有什么想法吗?
答案 0 :(得分:1)
你遇到的第一个问题是你用b替换bgImage,如果你看setText method,你会看到它返回void,因为你将None传递给QBrush,没有什么可以画的。试试:
bgImage = QImage()
bgImage = bgImage.setText( "textKey" , "This is some background text." )
palette = QPalette()
palette.setBrush(self.listWidget.backgroundRole(), QBrush( bgImage ))
self.listWidget.setPalette(palette)
另一种有效的方法是扩展列表并实现绘制事件:
import sys
from PyQt4 import QtCore, QtGui
class MyList(QtGui.QListWidget):
"""A funny list."""
def paintEvent(self, event):
"""Paint the widget."""
# paint the widget
painter = QtGui.QPainter(self.viewport())
# paint here
super(MyList, self).paintEvent(event)
你必须确保使用视口绘画而不是自己,因为你将获得QPainter :: begin:Widget绘画只能从paintEvent开始。