Название: не работает paintEvent у QListView
Отправлено: izoomer от Январь 04, 2007, 11:42
переопределил 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
Название: не работает paintEvent у QListView
Отправлено: Dendy от Январь 04, 2007, 12:08
Потому что View не получает собьІтие отрисовки, что логично. ОтрисовьІвается его viewport().
|