Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: deMax от Сентябрь 19, 2013, 14:04



Название: Считать иконку приложения
Отправлено: deMax от Сентябрь 19, 2013, 14:04
создал файл myapp.rc
Код:
IDI_ICON1               ICON    DISCARDABLE     "resource/app.ico"
Как мне в приложениии считать иконку? Хочу вывести ее крупным планов в окне About. (Файл ico имеет несколько размеров.)


Название: Re: Считать иконку приложения
Отправлено: Bepec от Сентябрь 19, 2013, 14:19
Не знаю как из программы обратиться напрямую.
Зато могу подсказать как получить список иконок из любого файла.


Название: Re: Считать иконку приложения
Отправлено: deMax от Сентябрь 19, 2013, 14:33
мне кажется что то такое должно прокатить:
    QIcon ico = QApplication::windowIcon();

Только QMessageBox::about не содержит параметра с иконкой, наверно виджет прийдется свой рисовать. Хотелось бы крупную иконку слева от текста.


Название: Re: Считать иконку приложения
Отправлено: Bepec от Сентябрь 19, 2013, 15:24
Спокойно создавайте QMessageBox и указывайте ему иконку, а не пользуйтесь статической функцией.

Иконка приложения и иконка файла разные вещи как бы. Вот если они одно и то же - тогда да, должно прокатить.


Название: Re: Считать иконку приложения
Отправлено: NicK от Сентябрь 19, 2013, 17:09
Зато могу подсказать как получить список иконок из любого файла.

Подскажите, мне интересно)


Название: Re: Считать иконку приложения
Отправлено: Bepec от Сентябрь 19, 2013, 17:15
Код:
QList<QPixmap> getExtractIcon(QString fileName)
{
uint t = (uint)(ExtractIcon(GetModuleHandle(0) , LPCWSTR(fileName.toStdWString().c_str()), -1));

QList<QPixmap> listOut;
for (int i = 0; i < t; i++)
{
HICON tmpIcon = ExtractIcon(GetModuleHandle(0) , LPCWSTR(fileName.toStdWString().c_str()),i);
listOut.append(QPixmap::fromWinHICON(tmpIcon));
DestroyIcon (tmpIcon);
}
return listOut;
}

Нужны хедеры QPixmap/QList/"windows.h"

Хм, правда извиняюсь - это сработает только на винде, ибо winApi. Проверялось на Qt 4.7.2.


Название: Re: Считать иконку приложения
Отправлено: NicK от Сентябрь 19, 2013, 17:40
понял, спасибо, попробую)


Название: Re: Считать иконку приложения
Отправлено: gil9red от Сентябрь 19, 2013, 17:57
QFileIconProvider - позволяет получить иконку файлов :)


Название: Re: Считать иконку приложения
Отправлено: Bepec от Сентябрь 19, 2013, 18:12
gil9red откуда вы такие классы выкапываете? :P

Ммм... Он же ж вроде только одну иконку вытягивает, так? Или я ошибаюся? :P 


Название: Re: Считать иконку приложения
Отправлено: kambala от Сентябрь 19, 2013, 18:21
Код
C++ (Qt)
   QMessageBox aboutBox(this);
   aboutBox.setWindowTitle(tr("About %1").arg(qApp->applicationName()));
   aboutBox.setIconPixmap(windowIcon().pixmap(64));
   aboutBox.setText(tr("qwerty"));
   aboutBox.exec();


Название: Re: Считать иконку приложения
Отправлено: gil9red от Сентябрь 19, 2013, 20:19
gil9red откуда вы такие классы выкапываете? :P

Ммм... Он же ж вроде только одну иконку вытягивает, так? Или я ошибаюся? :P 

Явление таких классов проходит во время сна, подобно озарению :D
А вообще, была похожая проблема у меня, вот и гугл подкинул намек про этот класс =)

Сколько иконок он вытягивает зависит от возможностей класса QIcon :)


Название: Re: Считать иконку приложения
Отправлено: gil9red от Сентябрь 19, 2013, 20:23
создал файл myapp.rc
Код:
IDI_ICON1               ICON    DISCARDABLE     "resource/app.ico"
Как мне в приложениии считать иконку? Хочу вывести ее крупным планов в окне About. (Файл ico имеет несколько размеров.)

Храните 2 файла изображений программы: ico и, например, png :)
png'шку храните в ресурсах программы и используйте, когда нужно


Название: Re: Считать иконку приложения
Отправлено: deMax от Сентябрь 25, 2013, 09:48
У меня иконка приложения выводится на всех окнах, как сделать чтобы она выводилась только на exe файле и в главном окне?


Название: Re: Считать иконку приложения
Отправлено: Fregloin от Октябрь 12, 2013, 21:01
Явно указывать икноки для других форм.