trayIcon的使用

Inheritance diagram of QSystemTrayIcon

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"))

你可能感兴趣的:(trayIcon的使用)