使用Qt的菜单栏/系统托盘应用

2 投票
1 回答
2506 浏览
提问于 2025-04-18 05:13

我刚开始学习Qt(PyQt),想做一个应用程序,里面的功能可以通过菜单栏或系统托盘来执行。这里有个很好的例子:

在这里输入图片描述

我找不到好的资料来学习怎么实现这个功能。有没有人能给点建议?

谢谢!

1 个回答

1

我想你是在寻找如何使用 QMenuQMainWindow 来处理菜单的部分,至少是这样。

这里有一个 C++ 的示例:

菜单示例

还有一个 PyQt4 的示例:

PyQt4 中的菜单和工具栏

为了方便你,这里有代码示例:

import sys
from PyQt4 import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(QtGui.qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')    
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

至于 QSystemTrayIcon 的部分,你可以写类似这样的代码:

def main():
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("Bomb.xpm"), w)
    menu = QtGui.QMenu(parent)
    exitAction = menu.addAction("Foo")
    trayIcon.setContextMenu(menu)

    trayIcon.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

撰写回答