Russian Qt Forum
Май 13, 2024, 13:17
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Список путей
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Список путей (Прочитано 4307 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Список путей
«
:
Апрель 23, 2016, 14:53 »
Добрый день
Есть QList<QDir> (список путей). Нужно отобразить его в попапке с учетом уникальности имен, напр
Цитировать
Standard
Collection1/Motions
Collection2/Motions
Т.е. 2 фолдера с одним именем Motions, значит показываем бОльший хвостик пути. Как это сделать удобно/элегантно?
Спасибо
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Список путей
«
Ответ #1 :
Май 09, 2016, 17:04 »
Эти все пути - содержимое одной папки или нет?
Просто непонятно, о чем речь и в чем проблема
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Список путей
«
Ответ #2 :
Май 10, 2016, 08:59 »
Цитата: Racheengel от Май 09, 2016, 17:04
Эти все пути - содержимое одной папки или нет?
Нет. Пример выше: папка c именем "Standard" в списке только одна, ну и показываем в попапке просто "Standard". Возможно на машине есть где-то еще папка с тем же именем, но нас это не волнует. А вот папок с именем "Motions" в списке уже 2 и хз "кто есть кто". Поэтому нужно показывать уникальные имена используя часть полного пути
Цитата: Racheengel от Май 09, 2016, 17:04
Просто непонятно, о чем речь и в чем проблема Грустный
А мне непонятно почему простейшие вещи Вам непонятны. Вы ж вроде специалист по "логике гуя"?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Список путей
«
Ответ #3 :
Май 10, 2016, 09:12 »
Цитировать
А мне непонятно почему простейшие вещи Вам непонятны. Вы ж вроде специалист по "логике гуя"?
Потому что задавая вопрос, неплохо бы объяснять его суть (как в последнем комменте). Сколько человек отписалось в этой ветке? Как думаете, по какой причине?
По теме: в принципе, можно оставить, как есть (в Вашем списке). Плюс при наведении мыши показывать полный путь в попапе.
Или, как вариант, отображать в виде дерева, гле имя папки будет корнем, а ее родительские папки - листиками. Примерно так:
Motions
....Collection1
....Collection2
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Список путей
«
Ответ #4 :
Май 10, 2016, 09:34 »
Цитата: Racheengel от Май 10, 2016, 09:12
Сколько человек отписалось в этой ветке? Как думаете, по какой причине?
Думаю потому что решение не так уж очевидно, и "тыц цитатой из букваря" не проходит
Цитата: Racheengel от Май 10, 2016, 09:12
По теме: в принципе, можно оставить, как есть (в Вашем списке).
Так у меня ничего и нет, это "как хотелось бы". Я спрашиваю как вычислить "минимальное но уникальное имя" по имеющемуся контейнеру QDir. Вы же это 100 раз видели в меню приложений "Open Recent", разные файлы с одинаковыми именами идентифицируются. Здесь просто фолдеры вместо файлов.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Список путей
«
Ответ #5 :
Май 10, 2016, 11:25 »
Честно говоря, я в основном встречал более "тупое" решение (всякие ворды-студии-креаторы) - там каждый файл отображается с полным путем, а если путь не влазит, то он "элайдится" с помощью "...".
Если же принципиально, чтобы показывалась уникальная части пути "с конца", то так - создать мультимап вида "ключ-путь", где "ключом" являлась бы "уникальная с конца" часть пути. Потом для каждого пути выделяем кусок от последнего слэша до конца и пакуем в мап. Далее смотрим, если в мапе есть одинаковые ключи, то заменяем их все на пути, которые начинаются со слэша "раньше", и повторяем так, пока мапа не станет уникальной.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Список путей
«
Ответ #6 :
Май 10, 2016, 14:05 »
Цитата: Racheengel от Май 10, 2016, 11:25
Если же принципиально, ..
Не то чтобы уж "принципиально", но на основной платформе принято так делать.
Цитата: Racheengel от Май 10, 2016, 11:25
..чтобы показывалась уникальная части пути "с конца", то так - создать мультимап вида "ключ-путь", где "ключом" являлась бы "уникальная с конца" часть пути. Потом для каждого пути выделяем кусок от последнего слэша до конца и пакуем в мап. Далее смотрим, если в мапе есть одинаковые ключи, то заменяем их все на пути, которые начинаются со слэша "раньше", и повторяем так, пока мапа не станет уникальной.
Как часто говорят
Цитировать
А можно пример?
Да, идея понятна, но реализация как-то не выглядит простой. "Костыль"?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Список путей
«
Ответ #7 :
Май 11, 2016, 18:21 »
Ну, костыль или не костыль, пока другого не пришло в голову
Идея то простая, вроде как.
1. Берем в качестве ключа сначала только правые части путей до \.
например, если пути такие:
SomeDir\Models
Dir2\Models1\Stuff
Dir2\Models2\Stuff
Dir3\Models
Dir3\SomeData
то сначала сформируется мультимап типа:
[Models, SomeDir\Models]
[Stuff, Dir2\Models1\Stuff]
[Stuff, Dir2\Models2\Stuff]
[Models, Dir3\Models]
[SomeData, Dir3\SomeData]
2 Выделяем повторяющиеся ключи, получаем 2 сета:
[Models, SomeDir\Models]
[Models, Dir3\Models]
[Stuff, Dir2\Models1\Stuff]
[Stuff, Dir2\Models2\Stuff]
3. В каждом сете заменяем ключи на значения справа до следующего слеша:
[SomeDir\Models, SomeDir\Models]
[Dir3\Models, Dir3\Models]
[Models1\Stuff, Dir2\Models1\Stuff]
[Models2\Stuff, Dir2\Models2\Stuff]
4. Повторяем п.2, пока не останутся одни уникальные ключи. Выводим их:
SomeDir\Models
Dir3\Models
Models1\Stuff
Models2\Stuff
SomeData
как то так, вроде...
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...