Alles rund um die Programmierung mit Qt
Hulk2442
Beiträge: 115 Registriert: 10. Januar 2007 13:44
Beitrag
von Hulk2442 » 9. November 2009 12:04
Hi
Ich möchte das Icon aus eines Programms oder einer anderen Datei darstellen.
Also z.B. von:
-) *.exe
-) *.mp3
-) *.jpg
-) *.doc
-) usw.
Das ganze soll auf einem Windowsrechner laufen es klappt jedoch nicht.
Ich habe mir diesbezüglich das <QFile> und <QFileInfo> angeschaut jedoch finde ich das nichts in diese Richtung!
Hat jemand vielleicht eine Lösung oder zumindest einen Ansatz um wie ich die Icons auslesen könnte?
TIA
Zuletzt geändert von
Hulk2442 am 9. November 2009 14:59, insgesamt 1-mal geändert.
AuE
Beiträge: 918 Registriert: 5. August 2008 10:58
Beitrag
von AuE » 9. November 2009 12:25
Meinst du die icons die du im EWxplorer siehst??
MartinS
Beiträge: 6 Registriert: 26. Juli 2007 21:32
Beitrag
von MartinS » 9. November 2009 12:32
Du kannst es ja mal mit QFileIconProvider versuchen:
QFileInfo info([Pfad zur Datei];
QFileIconProvider provider;
QIcon icon = provider.icon(info);
RavenIV
Beiträge: 267 Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut
Beitrag
von RavenIV » 9. November 2009 13:50
Hulk2442 hat geschrieben: Hi
Ich möchte das Icon aus eines Programms oder einer anderen Datei darstellen.
Also z.B. von:
-) *.exe
-) *.mp3
-) *.jpg
-) *.doc
-) usw.
Das Icon einer exe ist in der exe selbst enthalten. Dieses kann man auch extrahieren.
mp3, jpg, doc, usw. haben kein Icon enthalten. Da wird vom Explorer das Icon angezeigt, mit dem die Datei verknüpft ist oder das Icon, das der Dateiendung zugeordnet ist.
DLLs können ein oder mehrere Icons enthalten, diese kann man auch extrahieren und anzeigen.
Linux, das längste Text-Adventure aller Zeiten
Hulk2442
Beiträge: 115 Registriert: 10. Januar 2007 13:44
Beitrag
von Hulk2442 » 9. November 2009 14:59
@ MartinS
THX für die Hilfe!
Mit folgendem Code Funkt es bei *.EXE und auch allen anderen Formaten.
Auszug aus einem Testprogramm:
Code: Alles auswählen
//============================================================================== create
void CWindow::create()
{
pVLayout = new QVBoxLayout;
pLabel_1 = new QLabel;
pLabel_2 = new QLabel;
pLabel_3 = new QLabel;
pLabel_4 = new QLabel;
pVLayout->addWidget(pLabel_1);
pVLayout->addWidget(pLabel_2);
pVLayout->addWidget(pLabel_3);
pVLayout->addWidget(pLabel_4);
this->setLayout(pVLayout);
}
//============================================================================== create
void CWindow::display()
{
//MS-Messanger
QFileInfo info_1( "C:/msmsgs.exe" );
//FireFox
QFileInfo info_2( "C:/FirefoxPortable.exe" );
//VB-Script
QFileInfo info_3( "C:/OFFICE.VBE" );
//Verknüfung auf dem Desktop mit einem eigenem Icon
QFileInfo info_4( "C:/Documents and Settings/atw10d51/Desktop/Train" );
QFileIconProvider provider_1;
QFileIconProvider provider_2;
QFileIconProvider provider_3;
QFileIconProvider provider_4;
QIcon icon_1 = provider_1.icon(info_1);
QIcon icon_2 = provider_2.icon(info_2);
QIcon icon_3 = provider_3.icon(info_3);
QIcon icon_4 = provider_4.icon(info_4);
pLabel_1->setPixmap( icon_1.pixmap(40, 40) );
pLabel_2->setPixmap( icon_2.pixmap(40, 40) );
pLabel_3->setPixmap( icon_3.pixmap(40, 40) );
pLabel_4->setPixmap( icon_4.pixmap(40, 40) );
}