Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Командор от Февраль 22, 2011, 21:45



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

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


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Пантер от Февраль 22, 2011, 21:54
А как масштабируешь? Может в этом дело?


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Командор от Февраль 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));


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Пантер от Февраль 22, 2011, 22:51
А что за 1000?


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: ufna от Февраль 22, 2011, 23:04
а FileIconProvider у тебя что? Насколько помню, я переопределял айкон провайдер и чето внутри него делал.


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Командор от Февраль 22, 2011, 23:17
А что за 1000?

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

Опять зашел в проводник, нашел еще огромные значки. Иконки огромные 200 на 200, качество на 5. Не похоже, чтобы это были стандартные иконки, скорее всего проводник их увеличивает без потери качества.


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: BRE от Февраль 22, 2011, 23:21
скорее всего проводник их увеличивает без потери качества.
Так не бывает.  :)


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Командор от Февраль 22, 2011, 23:22
а FileIconProvider у тебя что? Насколько помню, я переопределял айкон провайдер и чето внутри него делал.

FileIconProvider это стандартный QFileIconProvider. Он вроде заточен под QDirModel и QFileSystemModel, но в одиночестве он тоже работает.


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: Пантер от Февраль 22, 2011, 23:24
Можешь приделать получение иконок через WinApi.


Название: Re: Как увеличить размер иконок в QFileIconProvider?
Отправлено: kolob от Декабрь 06, 2011, 14:15
Как подгружается иконка? Необходим абсолютный путь к файлу или только имя и расширение? Подскажите. В базу записываю файлы, а потом отображая их в QListWidget иконки не подгружаются.