Russian Qt Forum
Ноябрь 27, 2024, 14:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как увеличить размер иконок в QFileIconProvider?  (Прочитано 6386 раз)
Командор
Гость
« : Февраль 22, 2011, 21:45 »

Такая проблемка. В виндовом проводнике в режиме крупных значков размеры иконок довольно большие, 100 на 100, причем качество хорошее. QFileIconProvider выдает иконки примерно 40 на 40, и при масштабировании качество не очень.
Как же проводник берет иконки большего размера? Или он как-то увеличивает без потерь?

P.S. Судя по исходникам, QFileIconProvider все же пытается найти большие иконки, а если нет, то выдает маленькие. Поигравшись с QPixmapCache::find() выяснил, что при key = ext+QLatin1Char('l') выдаются иконки большого размера. Но по дефолту QFileIconProvider именно так и ищет. И если искать без QLatin1Char('l'), то иконки еще меньше. Так что QFileIconProvider выдает большие иконки, но проводник как-то отображает еще большего размера.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 22, 2011, 21:54 »

А как масштабируешь? Может в этом дело?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Командор
Гость
« Ответ #2 : Февраль 22, 2011, 22:42 »

А как масштабируешь? Может в этом дело?


Код:
    QIcon Icon = FileIconProvider->icon(FileInfo);
    QPixmap Pixmap = Icon.pixmap(1000);
    LabelPic->setPixmap(Pixmap.scaled(LabelPic->width(), LabelPic->height(),
                                    Qt::KeepAspectRatio,
                                    Qt::SmoothTransformation));
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 22, 2011, 22:51 »

А что за 1000?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ufna
Гость
« Ответ #4 : Февраль 22, 2011, 23:04 »

а FileIconProvider у тебя что? Насколько помню, я переопределял айкон провайдер и чето внутри него делал.
Записан
Командор
Гость
« Ответ #5 : Февраль 22, 2011, 23:17 »

А что за 1000?

Судя по документации, размер pixmap устанавливается этому значению. Если эта величина больше размера icon, то размер pixmap равен icon. Это для теста, чтобы точно знать что нет никаких ограничений на размер. В начале я брал размеры из icon методом actualSize, получается то же самое. Также вместо иконок использовал
     QPixmapCache::find("qt_.CPP"+QLatin1Char('l'),Pixmap)
При увеличении получается та же размытая картинка.

Опять зашел в проводник, нашел еще огромные значки. Иконки огромные 200 на 200, качество на 5. Не похоже, чтобы это были стандартные иконки, скорее всего проводник их увеличивает без потери качества.
Записан
BRE
Гость
« Ответ #6 : Февраль 22, 2011, 23:21 »

скорее всего проводник их увеличивает без потери качества.
Так не бывает.  Улыбающийся
Записан
Командор
Гость
« Ответ #7 : Февраль 22, 2011, 23:22 »

а FileIconProvider у тебя что? Насколько помню, я переопределял айкон провайдер и чето внутри него делал.

FileIconProvider это стандартный QFileIconProvider. Он вроде заточен под QDirModel и QFileSystemModel, но в одиночестве он тоже работает.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Февраль 22, 2011, 23:24 »

Можешь приделать получение иконок через WinApi.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #9 : Декабрь 06, 2011, 14:15 »

Как подгружается иконка? Необходим абсолютный путь к файлу или только имя и расширение? Подскажите. В базу записываю файлы, а потом отображая их в QListWidget иконки не подгружаются.
Записан

Qt 5.11.0, Win, MinGW
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.