2011-12-05 11 views
2

あなたのためにうまくいけば、簡単なもの...正しく

私はQtListWidgetItemの背景色を設定しようとしてきたが、私は多くの幸運を持っていないよ - 私はありませんので、これはおそらくですQListWidgetItemを正しく使用しています...私のテストコードでは、リスト内のすべての3番目の項目の前景を設定できますが、背景を設定することは効果がないようです。誰も私の愚かなエラーを見つけることができますか?

私は、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

うん - それは、ありがとう! - これは私に[ドキュメント](http://www.pyside.org/docs/pyside/PySide/QtGui/QListWidgetItem.html#PySide.QtGui.PySide.QtGui.QListWidgetItem.setBackground)に従うように教えてくれます... – danodonovan

+1

Qt4をインポートする場合、ヒントが欲しい場合は、 'QtBlah.Foo'のものをすべて取り除き、' Foo'と置き換えることができます: 'PyQt4.QtCore import *'と 'PyQt4から.QtGui import * '。 'QtCore.'と' QtGui.'をもう入力する必要がないので、物を少し読みやすくします。 – Blender

+0

PyQt4には、文字列をハードコードする代わりに、変数が組み込まれています。 'QtGui.QColor(QtCore.Qt.black)' – NuclearPeon