Название: QDirModel или откуда берутся значки файлов и папок? Отправлено: QCasper от Ноябрь 02, 2007, 11:48 Если установить экземпляр QDirModel в качестве модели в экземпляр QTreeView, то в этом вью можно будет наблюдать всю иерархию файлов и папок также как в проводнике. Я собираюсь создать несколько упрощенный вариант такой модели (+некоторые изменения), единственный вопрос, который меня интересует это как сделать так, чтобы все мои файлы и папки отображались с соответствующими значками. Другими словами, как это реализовано в QDirModel? Может быть кто-то сразу знает, неохота исходники рыть :-[
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: QCasper от Ноябрь 02, 2007, 11:57 Всё, разобрался, прошу прощения за поспешный пост. Но все же, если вдруг кто столкнется, то см. QFileIconProvider.
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: WW от Ноябрь 02, 2007, 12:35 Спасибо! Как раз бился над тем, как выдернуть ассоциированую файлу иконку.
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: crossly от Ноябрь 07, 2007, 18:32 гм..... QFileIconProvider отображает иконки только винды и мак..... а кто подскажет как в линукс....??
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: pastor от Ноябрь 07, 2007, 19:01 гм..... QFileIconProvider отображает иконки только винды и мак..... а кто подскажет как в линукс....?? А можно поинтересоваться, откуда такие данные. В ассистенте я не нашёл (может плохо искал конечно :) ) Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: QCasper от Ноябрь 07, 2007, 19:46 откуда какие именно данные? Класс QFileIconProvider? У меня Qt 4.3.2 - в асистанте есть.
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: pastor от Ноябрь 07, 2007, 21:06 откуда какие именно данные? Класс QFileIconProvider? У меня Qt 4.3.2 - в асистанте есть. Помоему вопрос crossly стоял об отображениее иконок, насколько я понял, в линукс через данный класс. Вопрос не стоял о наличии класса. И мне стало непонято, откуда такие данные, что QFileIconProvider отображает иконки только винды и мак. Что собственно говоря происходит по линуксом? Соответственно, в ассистанте я не нашёл никаких ограничение, что касаеться платформы, для этого класса. Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: QCasper от Ноябрь 08, 2007, 01:04 А понял теперь, просто сначала я вообще вопрос crossly не заметил, и никак вообще не пойму причем тут маки, вины и линуксы :)
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: crossly от Ноябрь 09, 2007, 21:01 поясняю.... дело тут не просто в иконке.... а в иконке ассоциированной с файлом... к примеру в винде я по иконке могу определить что файл к примеру принадлежит msword ну и т.д. .... понятное дело что в гноме и кде это дело реализовано по разному.... но собственно интерисует кде...
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: pastor от Ноябрь 09, 2007, 21:22 Непонятен вопрос.... Что не так с QFileIconProvider про который вы говорили?
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: crossly от Ноябрь 10, 2007, 19:06 а дело в самой иконке.... в винде например я по иконке могу определить что это файл msword а линухе нет.... т.е. в линухе видно только файл это или каталог... ну или ссылка...
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: ритт от Ноябрь 10, 2007, 19:18 дык, назначение/определение привязок - это уже задача графической оболочки
если хочешь то же самое под линухами, надо пользовать, к примеру, КФайлДиалог вместо КуФайлДиалог'а Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: crossly от Ноябрь 10, 2007, 19:21 ну енто то само собой понятно.... просто нужна кроссплатформенность.... поэтому К не покатит... т.е. что бы в винде свои иконки... в КДЕ свои...
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: Вячеслав от Ноябрь 10, 2007, 19:26 ну для линукса можно попытаться file позвать и посмотреть чего оно скажет ..... Но это делать надо руками (IMHO )в отличии от форточек... Но опять-таки IMHO это честнее - кто мне мешает криво файл под форточками обозвать ? file.pdf.doc например .. И что будут окна с таким делать - запущать ворд или акробата ? В общем - в линуксе приходящие файлы для импорта в нашу систему прогонялись через file и в соответствии с его рекомендациями прогонялись через фильтры ;) Пока работает четко ....
PS на расширения файла естественно не смотрим - вояки оччень любят ( для секретности наверное ;D ) doc или ртф как *.txt притаскивать ..... Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: fox от Ноябрь 10, 2007, 20:28 Судя по исходникам береться из QStyle->standardIcon()
Далие уже береться pixmap из конкретного стиля, например из QPlastiqueStyle() а там если посмотреть ищется в kdeешных (но для данного стиля) Для того же QCleanlooksStyle ищет в gnomeвских иконках Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: crossly от Ноябрь 13, 2007, 19:36 где ты говоришь ищется...?? ::)
Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: ритт от Ноябрь 13, 2007, 22:17 присоединяюсь к вячеславу
через file будет честно и надёжно ежели так не нравится (не хочется ручками работать), под лялихами биндь к кде Название: Re: QDirModel или откуда берутся значки файлов и папок? Отправлено: fox от Ноябрь 13, 2007, 23:56 где ты говоришь ищется...?? ::) Ну если я правильно разобрал исходники то получается следующая вещь (если где то неправ поправьте)QFileIconProvider содержит в себе QFileIconProviderPrivate в котором содержаться все картинки Они береться из стиля (это для Linux для Win и Mac так есть специфичные методы кроме этого) Код:
Цитировать Warning: Because of binary compatibility constraints, this function is not virtual. If you want to provide your own icons in a QStyle subclass, reimplement the standardIconImplementation() slot in your subclass instead. The standardIcon() function will dynamically detect the slot and call it. Из standardIconImplementation() дергаетсяКод: virtual QPixmap standardPixmap ( StandardPixmap standardPixmap, const QStyleOption * option = 0, const QWidget * widget = 0 ) const = 0 Там уже определены имена файлов откуда брать иконки плюс метод lookupIconTheme() насколько я понял используется для поиска иконок В стиле QPlastiqueStyle проверяется путь "/usr/share/icons/default.kde" В QCleanlooksStyle в соответствующем месте для gnome Далее уже для каждого зарезервированного типа грузиться с иконка из соответствующего файла Например для стандартной иконке SP_DirIcon в QPlastiqueStyle ищется файл folder.png Для QCleanlooksStyle gnome-fs-directory.png и тд |