Jay
Jay

Reputation: 3479

Set background text

Does anyone know how I can set background text for a QListWidget?

I've previously used

self.setStyleSheet("background-image:myBgImg.png")

but I want to create the text within the app. i.e:

bgImage = QImage()
bgImage = bgImage.setText( "textKey" , "This is some background text." )
palette = QPalette()
palette.setBrush(self.listWidget.backgroundRole(), QBrush( bgImage ))
self.listWidget.setPalette(palette)

though this doesn't seem to be working. Any ideas?

Upvotes: 2

Views: 244

Answers (1)

mandel
mandel

Reputation: 2947

The first problem you have is that you are overrideing bgImage with None, if you look at the setText method you will see that it returns void, since you are passing None to the QBrush there is nothing to draw. Try with:

bgImage = QImage()
bgImage = bgImage.setText( "textKey" , "This is some background text." )
palette = QPalette()
palette.setBrush(self.listWidget.backgroundRole(), QBrush( bgImage ))
self.listWidget.setPalette(palette)

An other approach that does work is to extend the list and implement the paint event:

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)

You have to make sure that you use the viewport to paint and not self since you will get QPainter::begin: Widget painting can only begin as a result of a paintEvent.

Upvotes: 1

Related Questions