powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / прогрессбар между обновлением строк в QTreeView
2 сообщений из 2, страница 1 из 1
прогрессбар между обновлением строк в QTreeView
    #38006670
Katamaran1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день имеется вот такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
                                             emit layoutAboutToBeChanged();
				int row = parent->index_of(item);
				beginRemoveRows(index, row, row);
				result=item->remove(is_remove_from_disk);
				endRemoveRows();
				emit layoutChanged();


в котором я удаляю элемент из дерева, вопрос следущего плана куда мне вставить прогресбар окно чтоб как то дать пользователю управлять удалением в данном случаи файлов, и в тоже время обновить дерево когда удалятся элементы? Вовремя удаления сами понимаете может произойти что угодно, от запрета удаления, до отмены, что делать в таких случаях как не повредить дерево?Где производить удаление и как уведомлять модель?
...
Рейтинг: 0 / 0
прогрессбар между обновлением строк в QTreeView
    #38007756
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прогресс - еще одно поле в модели, например int.
Отображение - допилить делегат на обработку этого поля в виде прогресс-бара.
Состояния удаления - еще одно поле в модели, string, с фиксированными состояниями, типа "Удаляется", "Удалён успешно", "Ошибка доступа" etc. Строку модель отображать умеет.

Сам процесс удаления должен выглядеть как-то так:
1. Пишешь механизм удаления файла, который умеет эмитить прогресс выполнения. М.б. в кьюте есть такой, нет времени в документацию смотреть.
2. Делаешь в модели слот, принимающий элемент, прогресс и состояние.
3. По запуску удаления из модели - создаёшь в отдельном потоке экземпляр "удалятора", подключаешь к слоту модели, передаешь нужные данные и и запускаешь.
4. По принятым в слот сигналам обновляешь поле с прогрессом и поле с состоянием. Эмитишь изменения значений, дабы их подхватывала вьюха.
5. Итог - успешное удаление или ошибка. Делаешь delete "удалятору". Если удаление файла прошло успешно - удаляешь элемент из модели.

PS В идеале, в случае успешного удаления, нужно подкрасить зелёным поле со статусом, написать в этом поле "Удалён успешно", и вставить задержку ~0.5 секунды, чтобы пользователь успел визуально зафиксировать сей факт.
PPS В принципе, можно обойтись одним полем, где положительные значения - это прогресс, а отрицательные - код ошибки.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / прогрессбар между обновлением строк в QTreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]