2011-08-19 63 views
2

有誰知道如何設置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

您遇到的第一個問題是您正在使用None覆蓋bgImage,如果您看到setText method,您會看到它返回void,因爲您將None傳遞給QBrush,沒有任何東西可以繪製。

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) 

你必須確保你使用視自畫,而不是自我:

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

,做的工作是擴展列表和落實油漆事件的另一種方法:與嘗試你將得到QPainter :: begin:Widget繪畫只能作爲paintEvent的結果開始。