Russian Qt Forum
Ноябрь 23, 2024, 07:24
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Не перерисовывать qtableview
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Не перерисовывать qtableview (Прочитано 4162 раз)
Serjpiter
Гость
Не перерисовывать qtableview
«
:
Июнь 05, 2019, 15:41 »
Доброго времени суток,
достался по наследству проект на qt , который некоторое время нужно поддерживать.
Более или менее все понятно, но есть пару проблем.
Одна из которых:
QtableView обновляет SqlQueryModel , основываясь на одной логике. (а именно, раз в секунду мы tableView1->SetModel (НоваяМодельСновымиДанными))
надо доработать обновление так, чтобы когда я схватил(установил фокус в ячейку) ячейку таблицы, данные в QtableView (назовём его tableView1) поступали, но чтобы они "добавлялись" , а сама ячейка находилась так же в фокусе и ,если это возможно, только полоса прокрутки сигнализировала о том, что элементов становиться больше, а не как ранее всегда из одного количества (допустим ста строк в таблице).
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Не перерисовывать qtableview
«
Ответ #1 :
Июнь 06, 2019, 12:25 »
Цитата: Serjpiter от Июнь 05, 2019, 15:41
Более или менее все понятно, но есть пару проблем.
Одна из которых:
QtableView обновляет SqlQueryModel , основываясь на одной логике. (а именно, раз в секунду мы tableView1->SetModel (НоваяМодельСновымиДанными))
QAbstractItemView::setModel() слишком кардинальный способ обновления вида. При этом существующая selectionModel() заменяется на новую, соответственно и фокус ячейки тоже изменяется. При изменении модели нужно ещё определить, где находится ячейка, которая была в фокусе до обновления, это может быть не так очевидно. В простейшем случае можно запомнить строку и колонку в текущем виде и с помощью метода QItemSelectionModel::setCurrentIndex() установить фокус для новой модели.
Изучите подробнее
Model/View Programming
в общем и
QItemSelectionModel
в частности.
Записан
Пока сам не сделаешь...
Serjpiter
Гость
Re: Не перерисовывать qtableview
«
Ответ #2 :
Июнь 06, 2019, 22:51 »
А нельзя сделать какой-то аналог заполнения данных в QtableView , по типу как вконтакте?
1)подгрузились посты
2) в случае появления новых постов какое-то время дополнять
3) при достижении какого-то числа сделать плашку "посмотреть данные далее"
только не для постов, а для строк в QtableView.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Не перерисовывать qtableview
«
Ответ #3 :
Июнь 07, 2019, 05:09 »
Цитата: Serjpiter от Июнь 05, 2019, 15:41
надо доработать обновление так, чтобы когда я схватил(установил фокус в ячейку) ячейку таблицы, данные в QtableView (назовём его tableView1) поступали, но чтобы они "добавлялись" , а сама ячейка находилась так же в фокусе и ,если это возможно, только полоса прокрутки сигнализировала о том, что элементов становиться больше, а не как ранее всегда из одного количества (допустим ста строк в таблице).
Перед сменой модели делаете setUpdatesEnable(false). После смены вызываете свой сигнал с QueuedConnection. Когда слот этого сигнала получит упр-е - пересчитываете scroll и selection, затем setUpdatesEnable(true)
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Не перерисовывать qtableview
«
Ответ #4 :
Июнь 07, 2019, 10:10 »
Цитата: Serjpiter от Июнь 06, 2019, 22:51
А нельзя сделать какой-то аналог заполнения данных в QtableView , по типу как вконтакте?
Многое зависит от характера обновлений. Если к существующим в модели данным просто добавляются новые строки, то лучше это делать с помощью QAbstractItemModel::insertRows(). Подробности в
Resizable models
.
Записан
Пока сам не сделаешь...
Serjpiter
Гость
Re: Не перерисовывать qtableview
«
Ответ #5 :
Июнь 14, 2019, 09:48 »
А никто не сможет проконсультировать платно?
писать сюда
vk.com[слэш]qtableview
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...