Название: QTableView: не обновляется нулевая строка Отправлено: galilley от Июнь 21, 2010, 09:24 Доброго времени!
Заметил вот такую багу - не обновляется нулевая строка в модели. Все классы стандартные. Модель создаю вот так: model = new QStandardItemModel(0, 4, this); tableView->setModel(model); Новые строки добавляю по количеству необходимых элементов вот так: model->appendRow( new QStandardItem); Данные вставляю через item()->setData(): model->item( 0, 1)->setData( QVariant(QTime::currentTime()), Qt::DisplayRole); Обновление виджета происходит только после того, как он попадает под фокус. update(), repaint() не помогают, хотя в тоже время строчка вида: model->item( 1, 1)->setData( QVariant(QTime::currentTime()), Qt::DisplayRole); проходит отлично. Спасибо. Alt Linux/Qt 4.5.3. Название: Re: QTableView: не обновляется нулевая строка Отправлено: crossly от Июнь 21, 2010, 09:37 Qt::EditRole ??
Название: Re: QTableView: не обновляется нулевая строка Отправлено: galilley от Июнь 21, 2010, 10:02 model->item( 0, 1)->setData( QVariant(QTime::currentTime()), Qt::EditRole);
Результат аналогичный. upd: к столбцу привязан делегат на виджет QTimeEdit, все изменения в делегате сразу уходят в модель, emitCommitData переопределён. Название: Re: QTableView: не обновляется нулевая строка Отправлено: Karl-Philipp от Июнь 21, 2010, 10:09 model->item( 0, 1)->setData( QVariant(QTime::currentTime()), Qt::EditRole); emitCommitData - похоже на сигнал. Результат аналогичный. upd: к столбцу привязан делегат на виджет QTimeEdit, все изменения в делегате сразу уходят в модель, emitCommitData переопределён. 1. Где вы его нашли? 2. Разве можно переопределять сигналы??? Название: Re: QTableView: не обновляется нулевая строка Отправлено: galilley от Июнь 21, 2010, 10:13 точно, вру.
Это слот, причём не переопределённый, выглядит вот так: Код: void TimeEditDelegate::emitCommitData() Стянул из какого-то примера о делегатах.. но дело не в нём, с отключенным делегатом тот же эффект. Название: Re: QTableView: не обновляется нулевая строка Отправлено: galilley от Июнь 21, 2010, 12:48 upd: замечено, что при добавлении новых строчек во время работы приложения такого эффекта не наблюдается.
Может это связано с тем, что добавление строчек в модель происходит тогда, когда виджет ещё только создан, а окно, к котором он находится ещё не привязано ни к какому layout-у, и show() ещё не вызывалось... Название: Re: QTableView: не обновляется нулевая строка Отправлено: galilley от Июль 01, 2010, 08:18 Проблема всё ещё актуальна.
Пробую воспроизвести её в каком-нить простом примере с минимальным количеством кода - не воспроизводится :( Может кто-то всё-таки сталкивался? Название: Re: QTableView: не обновляется нулевая строка Отправлено: galilley от Июль 19, 2010, 22:06 Есть, установлены условия, при которых это возникает.
Весь сырбор из-за того, что мне захотелось сделать размер строк поменьше. Вылилось это в строчку: tv->verticalHeader()->setDefaultSectionSize(22); если я 22 меняю на, скажем, 34 то всё обновляется отлично! Более того, если этот самый verticalHeader видимый и его размер можно изменять, то бага также проявляется, если вручную задать слишком маленький размер. Иллюстрация в приложении. Вопрос, как с этим бороться и куда писать? Как уменьшить вертикальный размер строк без таких странных последствий. |