设置背景文本

时间:2011-08-19 09:23:15

标签: image text background widget pyqt

有谁知道如何为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)

虽然这似乎不起作用。有什么想法吗?

1 个答案:

答案 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开始。