Надо переопределить метод рисовки для ячеек QTable::paintCell(...)
Например, для рисовки помеченных строк жирным шрифтом можно написать так:
#include <qapplication.h>
#include <qtable.h>
#include <qvaluevector.h>
#include <qpainter.h>
class MyTable : public QTable
{
public:
MyTable(int numRows, int numCols, QWidget * parent = 0, const char * name = 0)
: QTable( numRows, numCols, parent, name ) { selRows.resize(numRows); }
void setRowSelected( int row, bool s ) { selRows[row] = s; update(); }
private:
void paintCell ( QPainter * p, int row, int col, const QRect & cr, bool selected, const QColorGroup & cg )
{
if ( selRows[row] ) {
QFont font = this->font();
font.setWeight( QFont::Bold );
p->setFont( font );
}
else {
p->setFont( this->font() );
}
QTable::paintCell( p, row, col, cr, selected, cg );
}
QValueVector<bool> selRows;
};
int main( int argc, char** argv )
{
QApplication app( argc, argv );
MyTable mt( 10, 10 );
int i, j;
for ( i = 0; i < mt.numRows(); i++)
for ( j = 0; j < mt.numCols(); j++)
mt.setText( i, j, QString("Row : %1, Col : %2").arg(i+1).arg(j+1) );
mt.setRowSelected( 3, true );
mt.setRowSelected( 7, true );
mt.show();
QObject::connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
return app.exec();
}