M
miki
Jungspund
Ich mache meine erste Schritte mit QT Programmierung, jedoch komme ich an eine Stelle nicht weiter:
Ich bekomme es hin ein pixmap in eine qlistviewitem einzufügen, aber sowas banales, wie Hintergrundfarbe schaffe ich nicht.
Mit hilfe von paintCell schaffe ich eine Spalte einzufärben. Ich würde aber gerne nur bestimmte Zellen oder vielleicht Zeilen einfärben wollen.
Dafür ist paintCell wohl nicht gedacht?!
Ich bekomme es hin ein pixmap in eine qlistviewitem einzufügen, aber sowas banales, wie Hintergrundfarbe schaffe ich nicht.
Mit hilfe von paintCell schaffe ich eine Spalte einzufärben. Ich würde aber gerne nur bestimmte Zellen oder vielleicht Zeilen einfärben wollen.
Dafür ist paintCell wohl nicht gedacht?!
Code:
#include <qapplication.h>
#include <qlistview.h>
#include <qpainter.h>
#include <qpixmap.h>
class ListViewItem : public QListViewItem
{
public:
ListViewItem( QListView * parent, QString label1, QString label2, QString label3 );
void paintCell ( QPainter * p, const QColorGroup & cg, int column,
int width, int align );
};
ListViewItem::ListViewItem( QListView * parent, QString label1, QString
label2, QString label3 )
: QListViewItem( parent, label1, label2, label3 )
{
}
void ListViewItem::paintCell ( QPainter * p, const QColorGroup & cg, int
column, int width, int align )
{
if( column == 0 ) {
QColorGroup colRed = cg;
colRed.setColor( QColorGroup::Base, Qt::red );
colRed.setColor( QColorGroup::Text, Qt::green );
QListViewItem::paintCell( p, colRed, column, width, align );
} else {
QListViewItem::paintCell( p, cg, column, width, align ) ;
}
}
int main( int argc, char** argv )
{
QApplication a( argc, argv );
QPixmap pm( 11, 11 );
pm.fill( Qt::red );
QListView list;
list.addColumn( "One" );
list.addColumn( "Two" );
list.addColumn( "Color", 40 );
ListViewItem itemOne( &list, "One", "One", "2/red" );
ListViewItem itemTwo( &list, "Two", "Two", "1/green" );
ListViewItem itemThree( &list, "Three" , "Three", "1/red" );
itemThree.setPixmap(2,pm);
list.show();
a.setMainWidget( &list );
return a.exec();
}