переопределил paintEvent у своего вивера от QListView вот таким образом
void myView::paintEvent(QPaintEvent *event)
{
QPainter painter(viewport());
QPen pen(Qt::green, 10, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);
painter.drawRect(rect());
painter.setRenderHint(QPainter::Antialiasing);
int step=10;
QList <int> indexesRendered;
/* indexesRendered содержит номера строк для прорисовки */
/* например : */
/*..... 13,14,15,16,17,0,1,2,3,4,5,6,7,8 ........ текущая 1 */
QModelIndex centralItem = currentIndex();
foreach (int it , indexesRendered){
QStyleOptionViewItem option = viewOptions();
// если it == -1 то строка пустая и никакой делегат не рисуется
if ( it >= 0) {
QModelIndex labelIndex = model()->index(it, 0, rootIndex());
if ( centralItem == labelIndex ){
option.rect = QRect(10,132,200,66);
option.state |= QStyle::State_Selected;
step+=66;
} else {
option.rect = QRect(10,step,200,22);
step+=22;
}
itemDelegate()->paint(&painter, option, labelIndex);
} else {
step+=22;
}
}
при старте все рисуется так как надо но при навигации по строкам , т.е. изменении currentIndex ничего не меняется. Почему ? Что не так ?
добавлено спустя 8 минут: забыл
QT-4.2 Linux