Название: Не перерисовывать qtableview Отправлено: Serjpiter от Июнь 05, 2019, 15:41 Доброго времени суток,
достался по наследству проект на qt , который некоторое время нужно поддерживать. Более или менее все понятно, но есть пару проблем. Одна из которых: QtableView обновляет SqlQueryModel , основываясь на одной логике. (а именно, раз в секунду мы tableView1->SetModel (НоваяМодельСновымиДанными)) надо доработать обновление так, чтобы когда я схватил(установил фокус в ячейку) ячейку таблицы, данные в QtableView (назовём его tableView1) поступали, но чтобы они "добавлялись" , а сама ячейка находилась так же в фокусе и ,если это возможно, только полоса прокрутки сигнализировала о том, что элементов становиться больше, а не как ранее всегда из одного количества (допустим ста строк в таблице). Название: Re: Не перерисовывать qtableview Отправлено: ViTech от Июнь 06, 2019, 12:25 Более или менее все понятно, но есть пару проблем. Одна из которых: QtableView обновляет SqlQueryModel , основываясь на одной логике. (а именно, раз в секунду мы tableView1->SetModel (НоваяМодельСновымиДанными)) QAbstractItemView::setModel() слишком кардинальный способ обновления вида. При этом существующая selectionModel() заменяется на новую, соответственно и фокус ячейки тоже изменяется. При изменении модели нужно ещё определить, где находится ячейка, которая была в фокусе до обновления, это может быть не так очевидно. В простейшем случае можно запомнить строку и колонку в текущем виде и с помощью метода QItemSelectionModel::setCurrentIndex() установить фокус для новой модели. Изучите подробнее Model/View Programming (https://doc.qt.io/qt-5/model-view-programming.html) в общем и QItemSelectionModel (https://doc.qt.io/qt-5/qitemselectionmodel.html) в частности. Название: Re: Не перерисовывать qtableview Отправлено: Serjpiter от Июнь 06, 2019, 22:51 А нельзя сделать какой-то аналог заполнения данных в QtableView , по типу как вконтакте?
1)подгрузились посты 2) в случае появления новых постов какое-то время дополнять 3) при достижении какого-то числа сделать плашку "посмотреть данные далее" только не для постов, а для строк в QtableView. Название: Re: Не перерисовывать qtableview Отправлено: Igors от Июнь 07, 2019, 05:09 надо доработать обновление так, чтобы когда я схватил(установил фокус в ячейку) ячейку таблицы, данные в QtableView (назовём его tableView1) поступали, но чтобы они "добавлялись" , а сама ячейка находилась так же в фокусе и ,если это возможно, только полоса прокрутки сигнализировала о том, что элементов становиться больше, а не как ранее всегда из одного количества (допустим ста строк в таблице). Перед сменой модели делаете setUpdatesEnable(false). После смены вызываете свой сигнал с QueuedConnection. Когда слот этого сигнала получит упр-е - пересчитываете scroll и selection, затем setUpdatesEnable(true)Название: Re: Не перерисовывать qtableview Отправлено: ViTech от Июнь 07, 2019, 10:10 А нельзя сделать какой-то аналог заполнения данных в QtableView , по типу как вконтакте? Многое зависит от характера обновлений. Если к существующим в модели данным просто добавляются новые строки, то лучше это делать с помощью QAbstractItemModel::insertRows(). Подробности в Resizable models (https://doc.qt.io/qt-5/model-view-programming.html#resizable-models). Название: Re: Не перерисовывать qtableview Отправлено: Serjpiter от Июнь 14, 2019, 09:48 А никто не сможет проконсультировать платно?
писать сюда vk.com[слэш]qtableview |