2011-12-05 50 views
2

希望一個容易爲你...使用正確的setBackground

我一直在試圖建立一個QtListWidgetItem的背景顏色,但我沒有多少運氣 - 這大概是因爲我不是正確使用QListWidgetItem ...在我的測試代碼中,我可以設置列表中每個第三項的前景,但設置背景似乎沒有效果。任何人都可以發現我的愚蠢錯誤?

我Qt的4.7

由於既PyQt4的和PySide測試了這一點,丹

import sys 
from PySide import QtCore, QtGui 

class List(QtGui.QListWidget): 
    def __init__(self): 
     super(List, self).__init__() 
     self.populate() 

    def populate(self): 
     for i in range(32): 
      item = QtGui.QListWidgetItem(self) 
      item.setText('%d'%i) 

      if i % 3 == 0: 
       brush = QtGui.QBrush() 
       brush.setColor(QtGui.QColor('red')) 
       item.setBackground(brush) 

      if i % 3 == 1: 
       brush = QtGui.QBrush() 
       brush.setColor(QtGui.QColor('blue')) 
       item.setForeground(brush) 

if __name__ == '__main__': 

    app = QtGui.QApplication(sys.argv) 

    listw = List() 
    listw.show() 

    sys.exit(app.exec_()) 

回答

5

你並不真正需要的畫筆。只需要使用一個QColor

item.setBackground(QtGui.QColor('red')) 
+0

是的 - 這樣做,謝謝! - 這會教我遵循[documentation](http://www.pyside.org/docs/pyside/PySide/QtGui/QListWidgetItem.html#PySide.QtGui.PySide.QtGui.QListWidgetItem.setBackground)... – danodonovan

+1

如果你想要一個漂亮的提示,你可以去除* all * QtBlah.Foo'東西,並用'Foo'替換它,如果你像這樣導入Qt4:'從PyQt4.QtCore import *'和'從PyQt4 .QtGui導入*'。它使事情變得更加可讀,因爲你不需要再輸入'QtCore.'和'QtGui.'。 – Blender

+0

PyQt4內置了變量,而不必硬編碼字符串。 'QtGui.QColor(QtCore.Qt.black)' – NuclearPeon