[PyKDE] [PyQt3] alignment issue on subclassed QTableItem
Hans-Peter Jansen
hpj at urpla.net
Thu Sep 7 22:24:25 BST 2006
Hi Jim,
Am Donnerstag, 31. August 2006 23:42 schrieb Jim Bublitz:
>
> Sorry - can't help with QCheckBox/QButton. I implemented checkboxes
> with pixmaps, I think because I didn't like the way the Qt checkboxes
> looked and worked.
>
> It's fairly simple - I kept the underlying data in a list of one
> tuple per row. So when loading the table from the list, I just had to
> select which pixmap to assign to the cell, and then grab the table's
> 'clicked' signal to respond to mouse clicks for columns with
> checkboxes, and then toggle the pixmap assigned.
Nice idea, but does your approach allows to center the bitmap? IIRC the
QTableItem code, bitmaps always appear left to some text, but I don't
know, if the alignment() method trick can be applied here.
When I was on holidays last week, I found some time to look more deeply
into this issue without feeling too bad about wasting time in miniature
issues. I subclassed a QWidget for the checkbox editor, where I added
mouse and keyboard handlers.
Now it behaves reasonably well, with only a sub minor issue left on
focus handling. Qt3 tables know about two different focus styles:
FollowStyle and SpreadSheet. The former paints the usual wireframe
around the cell, while the latter draws a black rectangle. The problem
is, it paints them on top of the table grid, and I couldn't manage it
to get drawn there correctly for my CheckTableItems.
I also tried to use the QTable.paintFocus(), but couldn't get the
geometry right. Doing it myself, it's getting hairy: based on the
viewport geometry, one has to calculate the grid coordinates taking
(missing) headers into account.. Needless to say, one has to subclass
QTable, too. Oh well.
My current approach limits the focus painting into the cell, but the
test code reveals an off by one paint deviation depending on which cell
had the focus before: run the test code, move the cursor back and forth
(by keyboard) in both top cells, and then inside the checkbox column.
In the former case, the bottom and right part of the focus frame is
missing for the checkbox column, while in the latter case, it is drawn
as expected inside the cell. Funny, isn't it..
Still not completely satisfied :-[
Pedantic Pete
-------------- next part --------------
A non-text attachment was scrubbed...
Name: checktableitem.py
Type: application/x-python
Size: 8380 bytes
Desc: not available
Url : http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20060907/cbe8d76d/checktableitem.bin
More information about the PyQt
mailing list