用qlistview重载paintcell实现。
class GridVListItem : public QListViewItem {
public:
GridVListItem( QListView*parent ) : QListViewItem( parent ){}
GridVListItem( GridVListItem*parent ) : QListViewItem( parent ){}
GridVListItem( QListView*parent, GridVListItem*after ) : QListViewItem( parent, after ){}
GridVListItem( MyVListItem*parent, GridVListItem*after ) : QListViewItem( parent, after ){}
virtual void paintCell( QPainter *p, const QColorGroup &cg,
int column, int width, int alignment ){
QColorGroup _cg( cg );
QColor c = _cg.text();
int w = width;
int h = height();
int x2 = w - 1;
int y2 = h - 1;
QListViewItem::paintCell( p, _cg, column, width, alignment );
p->setPen( QColor(192, 192, 192) );
p->drawLine( x2, 0, x2, y2 );
p->drawLine( 0, y2, x2, y2 );
_cg.setColor( QColorGroup::Text, c );
}
};