Qt里面的托盘图标还是比较好实现的。可以单独一个模块,继承于上面的标准托盘图标类。
在主界面上,实例化一个托盘图标对象出来。然后把托盘图标对象的parent置成主界面对象。
下面是网上一位猿的程序里拷贝出来的例子。
其中setContextMenu用来给托盘图片设置一个弹出菜单,可以进行一些动作,比如例子中的显示,关闭。
另外比较重要的就是signal activated的对应到的slot函数,这里面会实现激发这个托盘图标后要实现的动作。
class TrayIcon(QSystemTrayIcon): def __init__(self, parent=None): super(TrayIcon, self).__init__(parent) self.initObjects() self.setObjects() self.activated.connect(self.iconClicked) def initObjects(self): self.menu = QMenu() self.showAction = QAction(u'显示', self, triggered=self.showWidget) self.quitAction = QAction(u"退出", self, triggered=self.exitApp) self.icon = QIcon('./img/icon.png') def setObjects(self): self.menu.addAction(self.showAction) self.menu.addAction(self.quitAction) self.setIcon(self.icon) self.setContextMenu(self.menu) def iconClicked(self, reason): print reason if reason==2 or reason==3: pw = self.parent() if pw.isVisible(): pw.hide() else: pw.show() def exitApp(self): self.setVisible(False) self.parent().exit() qApp.quit() sys.exit() def showWidget(self): self.emit(SIGNAL("showMain"))