[maemo-developers] PyQt ForegroundRole

From: Ram Kurvakat rkmaemo at gmx.com
Date: Thu Apr 29 14:16:59 EEST 2010
Not a 100% sure, but I think this is due to the QMaemo5 style implementation you are not able to do it.
Think Ive faced the issue before.

Is there a chance you could try with a delegate for your columns, thats worked for me.
Implementing the paint().

P.S. i dont use python, I use C++, hence I didnt paste the example.

----- Original Message -----
From: SC
Sent: 04/29/10 11:16 AM
To: maemo-developers at maemo.org
Subject: PyQt ForegroundRole

Hello, I've been struggling getting ForegroundRole http://doc.trolltech.com/4.6/qt.html  to work properly so I can change the text color of certain cells in QTableView.
 I took an example from http://www.daniweb.com/forums/thread191210-7.html http://www.daniweb.com/forums/thread191210-7.html  and added the following in the data(...) method:

 elif role == Qt.ForegroundRole:
 return QBrush(QColor(255, 0, 0))

When I run it on my Windows PC, the font color is set to red for all the cells but does not seem to have an effect on my N900.

Is there any Maemo-specific calls that I am missing here?

# http://www.daniweb.com/forums/thread191210-7.html http://www.daniweb.com/forums/thread191210-7.html 

import operator
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MyWindow(QWidget):
 def __init__(self, data_list, header, *args):
 QWidget.__init__(self, *args)
 # setGeometry(x_pos, y_pos, width, height)
 self.setGeometry(300, 200, 420, 250)
 self.setWindowTitle("Exploring PyQT's QTableView")

 table_model = MyTableModel(self, data_list, header)
 table_view = QTableView()
 # enable sorting

 layout = QVBoxLayout(self)

class MyTableModel(QAbstractTableModel):
 def __init__(self, parent, mylist, header, *args):
 QAbstractTableModel.__init__(self, parent, *args)
 self.mylist = mylist
 self.header = header

 def rowCount(self, parent):
 return len(self.mylist)

 def columnCount(self, parent):
 return len(self.mylist[0])

 def data(self, index, role):
 if not index.isValid():
 return QVariant()
 # ---------------------------------------------
 # Works on Windows PC but not on N900
 # ---------------------------------------------
 elif role == Qt.ForegroundRole:
 return QBrush(QColor(255, 0, 0))
 elif role != Qt.DisplayRole:
 return QVariant()
 return QVariant(self.mylist[index.row()][index.column()])

 def headerData(self, col, orientation, role):
 if orientation == Qt.Horizontal and role == Qt.DisplayRole:
 return QVariant(self.header[col])
 return QVariant()

 def sort(self, col, order):
 """sort table by given column number col"""
 self.mylist = sorted(self.mylist,
 if order == Qt.DescendingOrder:

header = ['First Name', 'Last Name', 'Age', 'Weight']
# a list of (name, age, weight) tuples
data_list = [
('Heidi', 'Kalumpa', '36', '127'),
('Frank', 'Maruco', '27', '234'),
('Larry', 'Pestraus', '19', '315'),
('Serge', 'Romanowski', '59', '147'),
('Carolus', 'Arm', '94', '102'),
('Michel', 'Sargnagel', '21', '175')

app = QApplication([])
win = MyWindow(data_list, header)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.maemo.org/pipermail/maemo-developers/attachments/20100429/f9746750/attachment.htm>
More information about the maemo-developers mailing list