Установить фоновый текст - PullRequest
       6

Установить фоновый текст

2 голосов
/ 19 августа 2011

Кто-нибудь знает, как установить фоновый текст для 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 Ответ

1 голос
/ 27 февраля 2012

Первая проблема, с которой вы столкнулись, заключается в том, что вы переопределяете bgImage с помощью None, если вы посмотрите на метод setText , вы увидите, что он возвращает 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: рисование виджета может начаться только в результате paintEvent.

...