On Monday 04 September 2006 06:34, Jim Bublitz wrote: > On Sunday 03 September 2006 01:41, Dave S wrote: > > As a relative newbe to GUI & QT programming I am trying to get various > > background colours for a QTable call. Extensive googling & headscratching > > has come up with re-defining paint() for each color. This seems like a > > lot of code & I wondered if there is a more elegant way ? A kind of > > self.table1.setColor(row, col, color) would be nice - or is this the only > > way :) > > > > Dave > > class SomeKindOFTableItem (QTableItem): > def __init__ (self, table, value): > # use default colors unless explicitly set > self.bgColor = None > self.fgColor = None > > # not all of these are necessary - depends on which you want > def setColor (self, bgColor, fgColor): > # bgColor, fgColor are QColor constants - eg QColor (0xff, 0x11, 0x00), > or # Qt.red > self.bgColor = bgColor > self.fgColor = fgColor > > def setBGColor (self, bgColor): > self.bgColor = bgColor > > def setFGColor (self, fgColor): > self.fgColor = fgColor > > def paint (self, painter, colorgrp, rect, selected): > if self.fgColor: > colorgrp.setColor (QColorGroup.Text, self.fgColor) > > if self.bgColor: > colorgrp.setColor (QColorGroup.Base, self.bgColor) > > QTableItem.paint (self, painter, colorgrp, rect, selected) > > then, for example: > > self.table.item (row, col).setColor (Qt.red, Qt.blue) > Thats brilliant !
> (of course (row,col) must have a QTableItem set - if you don't know, you > need to test for that). > No problem > I prefer to do it in the table item, because then the table item can > respond automatically to its value, for example a negative $ amount in red, > positive in black, or a table item can hold some kind of object that knows > its status and displays a corresponding color automatically. A table item > knows its row and column too, so it can respond to those as well. (You can > have paint() do the color setting automatically instead of providing > explicit "set" methods too) So you can put code inside the table item ? - I did not realize this was possible. Ah... do you mean subclassing ? > > In fact, I prefer to make table items fairly smart - they can know if > they're dollar amounts, integers, strings, telephone numbers, postal codes > and all sorts of things so they can format and validate themselves. Then > you can overload QTable to "know" what table item type belongs in a > particular column, and have it create the right type automatically - not > too much harder. . > > Jim Thank you so much for taking the time to answer. As a QT newbe (& Python semi-newbe) it is very much appreciated :) Dave _______________________________________________ PyKDE mailing list [email protected] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
