/**
* build the SystemTroyIcon
*
*/
public void SystemTroyIconDisplay()
{
//if could't view systemTrayIcon, not to set the icon
if (!QSystemTrayIcon.isSystemTrayAvailable())
{
return;
}
trayIconMenu = new QMenu(this);
trayIconMenu.aboutToShow.connect(this, "updateMenu()");
toggleVisibilityAction = new QAction("Show/Hide", this);
toggleVisibilityAction.triggered.connect(this, "toggleVisibility()");
trayIconMenu.addAction(toggleVisibilityAction);
QAction restoreAction = new QAction("Restore", this);
restoreAction.triggered.connect(this, "showNormal()");
trayIconMenu.addAction(restoreAction);
QAction minimizeAction = new QAction("Minimize", this);
minimizeAction.triggered.connect(this, "showMinimized()");
trayIconMenu.addAction(minimizeAction);
QAction maximizeAction = new QAction("Maximize", this);
maximizeAction.triggered.connect(this, "showMaximized()");
trayIconMenu.addAction(maximizeAction);
trayIconMenu.addSeparator();
QAction quitAction = new QAction("&Quit", this);
quitAction.triggered.connect(this, "QuitApplication()");
trayIconMenu.addAction(quitAction);
// Create the tray icon
trayIcon = new QSystemTrayIcon(this);
trayIcon.setToolTip("M2 Application");
trayIcon.setContextMenu(trayIconMenu);
trayIcon.activated.connect(this, "activated(com.trolltech.qt.gui.QSystemTrayIcon$ActivationReason)");
changeIcon(0);
trayIcon.setIcon(new QIcon(new QPixmap("classpath:/com/macchy/m2/ui/images/Skype Time.png")));
trayIcon.show();
}
/**
* quit the application
*/
protected void QuitApplication()
{
//stop the application
QApplication.exit();
trayIcon.dispose();
}
/**
* change the view of hide or show
*/
protected void updateMenu() {
toggleVisibilityAction.setText(isVisible() ? tr("Hide") : tr("Show"));
}
protected void toggleVisibility() {
if (isVisible())
hide();
else
show();
}
/**
* @param reason
*/
public void activated(QSystemTrayIcon.ActivationReason reason) {
//String name = QSystemTrayIcon.MessageIcon.resolve(reason.value()).name();
if (reason.equals(QSystemTrayIcon.ActivationReason.Trigger)){
if(!isVisible())
{
show();
}
}
}
然后在重写closeEvent
@Override
protected void closeEvent(QCloseEvent e)
{
e.ignore();
setVisible(false);
}