DE
June 5, 2019, 1:48 a.m.
При выборе элеметна на ListView список пролистывается в конец.
Приложение для работы с БД.
Для отображения части информации используется ScrollView{ListView{}}. В качастве делегата используется DelegateModel.
- DelegateModel{
- id: visualModel
- model: elemModel
- groups: [ DelegateModelGroup{ name: "selected" } ]
- function itemsInSelected(){
- filterOnGroup = "selected";
- var cnt = count;
- filterOnGroup = "items";
- return cnt;
- }
- delegate:
- Rectangle {
- id: listItem
- width: listViewId.width
- height: 50
- color: (listItem.DelegateModel.inSelected) ?
- "#575757" : "#d3d3d3";
- Text {
- id: nameText
- font.pixelSize: 18
- text: "<b>" + NAME_c + "</b>"
- color: (listItem.DelegateModel.inSelected) ?
- "white" : "black"
- }
- Text {
- anchors.left: nameText.left
- anchors.right: parent.right
- anchors.top: nameText.bottom
- text: "<i>" +
- dbHelper.getElementType(ELEMENT_TYPE_ID_c) +
- "</i>"
- color: (listItem.DelegateModel.inSelected) ?
- "white" : "black"
- }
- MouseArea{
- anchors.fill: parent
- onClicked:{
- if (mouse.button === Qt.LeftButton){
- if (mouse.modifiers & Qt.ControlModifier){
- listItem.DelegateModel.inSelected =
- !listItem.DelegateModel.inSelected;
- }else{
- //I am ashamed for that :(
- visualModel.items.removeGroups(0,
- visualModel.items.count,
- ["selected"]);
- listItem.DelegateModel.inSelected = true;
- }
- xTextInput.text = X_c;
- yTextInput.text = Y_c;
- zTextInput.text = Z_c;
- listViewId.curentElemId = ID_c;
- }
- }
- }
- }
- }
- ScrollView{
- anchors.left: searchPanel.left
- anchors.right: searchPanel.right
- anchors.top: searchPanel.bottom
- anchors.topMargin: searchPanel.height * 0.1
- anchors.bottom: elemBtnsPanel.top
- anchors.bottomMargin: elemBtnsPanel.height * 0.1
- ListView {
- id: listViewId
- visible: true
- focus: true
- currentIndex: -1
- clip: true;
- cacheBuffer: 100000
- snapMode: ListView.SnapToItem
- model: visualModel
- enabled: {return !isEditable}
- anchors.fill: parent
- property int curentElemId: 0;
- }
- }
В качестве модели выступает наследник от QSqlQueryModel.
Проблема, в том, что при выборе элеметна на ListView список пролистывается в конец.
2
99
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Выполнять селект элементов на view это архитектурная ошибка.
Тебе нужно сделать метод select в своей модели (наследник от QSqlQueryModel), там будут выполнятся операции по выборке а также должно быть свойство отображающие какой элемент сейчас выделен.
Что касается перелистывания списка, то подазриваю что вы используете методы BeginResetModel and endResetModel, эти методы полностью перестраивают вьюшку а значит и сбивают скрол. Нужно использовать:
Проблема была в смене фильтра в функции.