Russian Qt Forum
Ноябрь 24, 2024, 07:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
QTableView: не обновляется нулевая строка
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTableView: не обновляется нулевая строка (Прочитано 4806 раз)
galilley
Гость
QTableView: не обновляется нулевая строка
«
:
Июнь 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.
Записан
crossly
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #1 :
Июнь 21, 2010, 09:37 »
Qt::EditRole ??
Записан
galilley
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #2 :
Июнь 21, 2010, 10:02 »
model->item( 0, 1)->setData( QVariant(QTime::currentTime()), Qt::EditRole);
Результат аналогичный.
upd: к столбцу привязан делегат на виджет QTimeEdit, все изменения в делегате сразу уходят в модель, emitCommitData переопределён.
Записан
Karl-Philipp
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #3 :
Июнь 21, 2010, 10:09 »
Цитата: galilley от Июнь 21, 2010, 10:02
model->item( 0, 1)->setData( QVariant(QTime::currentTime()), Qt::EditRole);
Результат аналогичный.
upd: к столбцу привязан делегат на виджет QTimeEdit, все изменения в делегате сразу уходят в модель,
emitCommitData переопределён
.
emitCommitData - похоже на сигнал.
1. Где вы его нашли?
2. Разве можно переопределять сигналы???
Записан
galilley
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #4 :
Июнь 21, 2010, 10:13 »
точно, вру.
Это слот, причём не переопределённый, выглядит вот так:
Код:
void TimeEditDelegate::emitCommitData()
{
emit commitData(qobject_cast<QWidget *>(sender()));
}
Стянул из какого-то примера о делегатах.. но дело не в нём, с отключенным делегатом тот же эффект.
Записан
galilley
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #5 :
Июнь 21, 2010, 12:48 »
upd: замечено, что при добавлении новых строчек во время работы приложения такого эффекта не наблюдается.
Может это связано с тем, что добавление строчек в модель происходит тогда, когда виджет ещё только создан, а окно, к котором он находится ещё не привязано ни к какому layout-у, и show() ещё не вызывалось...
Записан
galilley
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #6 :
Июль 01, 2010, 08:18 »
Проблема всё ещё актуальна.
Пробую воспроизвести её в каком-нить простом примере с минимальным количеством кода - не воспроизводится
Может кто-то всё-таки сталкивался?
Записан
galilley
Гость
Re: QTableView: не обновляется нулевая строка
«
Ответ #7 :
Июль 19, 2010, 22:06 »
Есть, установлены условия, при которых это возникает.
Весь сырбор из-за того, что мне захотелось сделать размер строк поменьше.
Вылилось это в строчку:
tv->verticalHeader()->setDefaultSectionSize(22);
если я 22 меняю на, скажем, 34 то всё обновляется отлично!
Более того, если этот самый verticalHeader видимый и его размер можно изменять, то бага также проявляется, если вручную задать слишком маленький размер.
Иллюстрация в приложении.
Вопрос, как с этим бороться и куда писать?
Как уменьшить вертикальный размер строк без таких странных последствий.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...