Seite 1 von 1

QTrayIcon transparent

Verfasst: 17. Februar 2009 23:37
von nicmoe
Hi,

ich habe mal wieder eine Frage :oops:
Folgendes: Mir scheint es als würde QTrayIcon unter WindowsXP nicht funktionieren. Wenn ich den Code unter Vista compiliere, und laufen lasse, erscheint ein Icon und wenn ich die exe dann unter XP laufen lasse, ist kein Icon da sondern nur Transparenz.
Unter Linux läuft mein Programm auch mit Icon, deshalb muss das ganze wohl an XP liegen, oder daran, dass ich unter Vista für XP compiliere...

Ist da irgendein Fehler bekannt?

MfG

nic

Verfasst: 18. Februar 2009 17:11
von CaptnChaos
code oder am besten das projekt für solche sachen mitposten.

Verfasst: 18. Februar 2009 18:55
von nicmoe
Das ganze Projekt wäre etwas komliziert, weil das mehr als 700 zeilen irrelevanter code sind ;)

aber hier die methode für das icon:

Code: Alles auswählen

void setupIcon()
{
	 appIcon = new QIcon;
	 appIcon->addFile(":/anime1.ico");
	 setWindowIcon(*appIcon);
	 createActions();
	 createTrayIcon(appIcon);
}

Code: Alles auswählen

void createTrayIcon(QIcon * icon)
{
trayIconMenu = new QMenu(this);
trayIconMenu->addAction(minimizeAction);
trayIconMenu->addAction(restoreAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(restoreFromTray(QSystemTrayIcon::ActivationReason)));
trayIcon->setIcon(*icon);
trayIcon->show();
}
wie gesagt, das funktioniert auch wunderbar unter jedem System außer WindowsXP...

Ich hoffe das nützt was.

Edit: Ich habe auf Windows XP testweise das QSystemTrayIcon Example gestartet. Da waren ebenfalls keine Icons zu sehen! Scheint wohl ein allg. Problem zu sein?

Verfasst: 18. Februar 2009 23:13
von CaptnChaos
Nein ist kein generelles problem. Versuch mal kein .ico sondern ein .png zu verwenden.
Mir scheint deine WindowsXP Qt4 installation hat Probleme mit dem ICO Format.

Verfasst: 19. Februar 2009 07:47
von solarix
Ist zwar Offtopic.. aber trotzdem noch ein paar Hinweise:

- löschst du "appIcon" im Destruktor? Wenn nicht, gibt's ein Memoryleak..
- warum denn überhaupt ein Pointer? Scheint mir in diesem Fall gar nicht notwendig zu sein...