Russian Qt Forum

Qt => Общие вопросы => Тема начата: onlik от Ноябрь 27, 2009, 01:27



Название: Получить иконку приложения
Отправлено: onlik от Ноябрь 27, 2009, 01:27
Привет,

подскажите, пожалуйста, как можно получить иконку какого-нить приложения, скажем C:\windows\notepad.exe

Заранее благодарен!


Название: Re: Получить иконку приложения
Отправлено: spectre71 от Ноябрь 27, 2009, 01:34
Привет,
подскажите, пожалуйста, как можно получить иконку какого-нить приложения, скажем C:\windows\notepad.exe
Заранее благодарен!

А какое это имеет отношение к QT?


Название: Re: Получить иконку приложения
Отправлено: Alex Custov от Ноябрь 27, 2009, 01:34
ExtractIcon (http://msdn.microsoft.com/en-us/library/ms648068(VS.85).aspx)


Название: Re: Получить иконку приложения
Отправлено: onlik от Ноябрь 27, 2009, 01:45
ExtractIcon (http://msdn.microsoft.com/en-us/library/ms648068(VS.85).aspx)
Спасибо за ответ, а не подскажите как ее именно в программе на QT отобразить, загрузить куда-нить, в QBitmap, QIcon.


Название: Re: Получить иконку приложения
Отправлено: uriel от Ноябрь 27, 2009, 08:53
Смотрите QFileIconProvider.


Название: Re: Получить иконку приложения
Отправлено: spectre71 от Ноябрь 27, 2009, 10:26
Смотрите QFileIconProvider.

Ты сначала вопрос внимательно прочитай, а потом уже отвечай?


Название: Re: Получить иконку приложения
Отправлено: Rcus от Ноябрь 27, 2009, 10:44
Ты сначала вопрос внимательно прочитай, а потом уже отвечай?
Простите, может я что-то не понял (или вопросы разучился читать), но разве совет использовать QFileIconProvider не является правильным ответом?


Название: Re: Получить иконку приложения
Отправлено: spectre71 от Ноябрь 27, 2009, 10:51
Ты сначала вопрос внимательно прочитай, а потом уже отвечай?
Простите, может я что-то не понял (или вопросы разучился читать), но разве совет использовать QFileIconProvider не является правильным ответом?

Как можно получить иконку какого-нить приложения, а не иконку типа файла для QDirModel.
Цитировать
The QFileIconProvider class provides file icons for the QDirModel class.
Посмотри что он возвращает.

Правильный ответ уже был дан  -  ExtractIcon


Название: Re: Получить иконку приложения
Отправлено: Rcus от Ноябрь 27, 2009, 11:13
Как можно получить иконку какого-нить приложения, а не иконку типа файла для QDirModel.
Ну я потому и не понял вашего комментария:
$QTDIR/src/gui/itemviews/qfileiconprovider.cpp
QIcon QFileIconProvider::icon(const QFileInfo &info) const
QIcon QFileIconProviderPrivate::getWinIcon(const QFileInfo &fileInfo) const
В конце приводит к вызовам SHGetFileInfo/QPixmap::fromWinHICON


Название: Re: Получить иконку приложения
Отправлено: uriel от Ноябрь 27, 2009, 11:14
Смотрите QFileIconProvider.

Ты сначала вопрос внимательно прочитай, а потом уже отвечай?
Знаете, я не очень люблю когда меня вот просто так пытаются в чём-то обвинить.
Я прекрасно понимаю, что пишу и просто так абы что говорить не стал.
Код
C++ (Qt)
#include <QApplication>
#include <QFileInfo>
#include <QFileIconProvider>
#include <QLabel>
//
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
 
QFileIconProvider provider;
QFileInfo notepad("c:/windows/notepad.exe");
 
QLabel lbl;
lbl.setPixmap(provider.icon(notepad).pixmap(32, 32));
lbl.show();
 
return app.exec();
}
 


Название: Re: Получить иконку приложения
Отправлено: spectre71 от Ноябрь 27, 2009, 12:20
Смотрите QFileIconProvider.

Ты сначала вопрос внимательно прочитай, а потом уже отвечай?
Знаете, я не очень люблю когда меня вот просто так пытаются в чём-то обвинить.
Я прекрасно понимаю, что пишу и просто так абы что говорить не стал.
Код
C++ (Qt)
#include <QApplication>
#include <QFileInfo>
#include <QFileIconProvider>
#include <QLabel>
//
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
 
QFileIconProvider provider;
QFileInfo notepad("c:/windows/notepad.exe");
 
QLabel lbl;
lbl.setPixmap(provider.icon(notepad).pixmap(32, 32));
lbl.show();
 
return app.exec();
}
 

К сожалению, дофига народу пишет что попало :)

Извини, Ты прав!
Поскольку мне было интересно, то первое что я сделал увдев твое сообщение посмотрел QFileIconProvider в Assistant.
Видимо дока для данного класса мягко сказать убогая. Ничто в ней не указывает на то что он делает ExtractIcon.


Название: Re: Получить иконку приложения
Отправлено: uriel от Ноябрь 27, 2009, 12:36
К сожалению, дофига народу пишет что попало :)

Извини, Ты прав!
Поскольку мне было интересно, то первое что я сделал увдев твое сообщение посмотрел QFileIconProvider в Assistant.
Видимо дока для данного класса мягко сказать убогая. Ничто в ней не указывает на то что он делает ExtractIcon.
Да это нормальное явление на самом деле. Можно сказать суровая реальность. :)
Меня просто в своё время смутил тот факт, что он принимает QFileInfo, а он вроде как уникальный для каждого файла, а не только для расширения. Оказалось, действительно сработало.
А дока там и правда ужасная. Нет, например, упоминания о том, что внутри он на самом деле держит кэш уже полученных иконок. Троллям писал, но ответа пока нет.


Название: Re: Получить иконку приложения
Отправлено: onlik от Ноябрь 27, 2009, 13:26
uriel, спасибо большое за ответ, очень помогли!