Russian Qt Forum
Ноябрь 24, 2024, 13:34
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Модель дерева: зачем переопределять методы....
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Модель дерева: зачем переопределять методы.... (Прочитано 8434 раз)
mozgofil
Гость
Модель дерева: зачем переопределять методы....
«
:
Июнь 23, 2009, 20:36 »
insertColumns,insertRows,removeColumns,removeRows
и что будет, если их не переопределить(потому что вроде и так всё работает)?
Записан
Karl-Philipp
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #1 :
Июнь 23, 2009, 20:46 »
Цитировать
If you implement your own model, you can reimplement this function if you want to support insertions. Alternatively, you can provide you own API for altering the data.
То есть для моделей-наследников от QAbstractItemModel.
Для полного понимания глянь пример editabletreemodel. Попробуй не переопределить указанные тобой методы
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #2 :
Июнь 23, 2009, 21:35 »
В примере этими методами происходит соответственно вставка и удаление в дерево ч/з объект модели.
А если мне нужно сделать вставку и удаление не используя модель(т.е. модель -оболочка над данными и данные о модели ничего не знают о модели, модифицируются не через модель)?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Модель дерева: зачем переопределять методы....
«
Ответ #3 :
Июнь 23, 2009, 21:43 »
я кстати так ничего путного и не придумал... вообще по идее данные долны сообщать сигналом о добавлении\изъятии данных (ну или обновляться по таймеру) так что решение хотелось бы узнать
Записан
Rcus
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #4 :
Июнь 23, 2009, 22:03 »
А в чем проблема в коде, который обновляет данные не зная о модели определить сигналы для оповещения об изменении данных?
Записан
Karl-Philipp
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #5 :
Июнь 23, 2009, 22:17 »
Цитата: mozgofil от Июнь 23, 2009, 21:35
В примере этими методами происходит соответственно вставка и удаление в дерево ч/з объект модели.
А если мне нужно сделать вставку и удаление не используя модель(т.е. модель -оболочка над данными и данные о модели ничего не знают о модели, модифицируются не через модель)?
Дык, в дерево, ж, ничего не вставляется. Дерево служит только для отображения данных модели.
Цитата: Assistant
QTreeView shows model items of data in a hierarchical list.
Вставка/удаление должны проводиться в самой модели, а все изменения показываются с помощью того или иного Q...View.
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #6 :
Июнь 23, 2009, 22:33 »
Цитата: terlan от Июнь 23, 2009, 22:17
Цитата: mozgofil от Июнь 23, 2009, 21:35
В примере этими методами происходит соответственно вставка и удаление в дерево ч/з объект модели.
А если мне нужно сделать вставку и удаление не используя модель(т.е. модель -оболочка над данными и данные о модели ничего не знают о модели, модифицируются не через модель)?
Дык, в дерево, ж, ничего не вставляется. Дерево служит только для отображения данных модели.
В примере в дерево всё-таки вставляется новый элемент (TreeItem::insertChildren), т.е. данные модифицируются. причём опосредованно, ч/з модель
Цитата: terlan от Июнь 23, 2009, 22:17
Цитата: Assistant
QTreeView shows model items of data in a hierarchical list.
Вставка/удаление должны проводиться в самой модели, а все изменения показываются с помощью того или иного Q...View.
это в идеале.
Мне бы хотелось сделать по схеме:
[какая-либо модификация данных]->signal->[обновление дерева]
чтобы не возиться отдельно с insert, remove. Данные у меня в программе - не совсем дерево и структура данных будет меняться => взаимодействие данных с интерфейсом требуется максимально упростить
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #7 :
Июнь 23, 2009, 22:37 »
Цитата: Rcus от Июнь 23, 2009, 22:03
А в чем проблема в коде, который обновляет данные не зная о модели определить сигналы для оповещения об изменении данных?
Вобщем, нужно чтобы по сигналу обновилось всё что ниже определённого итема или хотя бы
просто полностью обновилось.
Записан
Rcus
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #8 :
Июнь 23, 2009, 23:41 »
Эээ... и? Нужно - делайте, ага
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Модель дерева: зачем переопределять методы....
«
Ответ #9 :
Июнь 24, 2009, 11:43 »
некрасиво! при посылке сигнала beginInsertRows и Remove вызываются
после
фактического добавления \удаления данных, что нехорошо (в случае ремува особенно). Оно вроде и работает, но косячит удаление (возможно вставка перед\после) выделенной строки. К примеру если строка последняя, то после удаления ее выделение должно остаться на ней, а оно сползает на предпоследнюю (бывшую предпредпоследнюю) и там и остается...
added: потестил на чистом примере, сейчас вроде без глюков работает... странно
«
Последнее редактирование: Июнь 24, 2009, 11:52 от Авварон
»
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #10 :
Июнь 24, 2009, 18:42 »
Цитата: Rcus от Июнь 23, 2009, 23:41
Эээ... и? Нужно - делайте, ага
Полное обновление делаю методом reset();
А как сделать блокировку модели, чтобы модель бездействовала пока данные модифицируются?
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #11 :
Июнь 24, 2009, 18:52 »
Цитата: Авварон от Июнь 24, 2009, 11:43
некрасиво! при посылке сигнала beginInsertRows и Remove вызываются
после
фактического добавления \удаления данных, что нехорошо (в случае ремува особенно).
- сделать так, чтобы они вызывались вовремя -это уже ваша задача. Нельзя сигналами злоупотреблять.
->signal->[ beginInsertRow() , модификация данных, endInsertRow()]
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Модель дерева: зачем переопределять методы....
«
Ответ #12 :
Июнь 24, 2009, 19:21 »
написал же что все нормально работает при вставка, beginInsertRow(), endInsertRow()
Записан
mozgofil
Гость
Re: Модель дерева: зачем переопределять методы....
«
Ответ #13 :
Июнь 24, 2009, 19:27 »
Цитата: Авварон от Июнь 24, 2009, 19:21
написал же что все нормально работает при вставка, beginInsertRow(), endInsertRow()
... странно (c)
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...