在Qt中,要显示系统托盘菜单项,你可以使用QSystemTrayIcon类。以下是一个简单的示例,展示如何创建一个系统托盘图标并添加一些菜单项:
#include <QApplication> #include <QMenu> #include <QSystemTrayIcon>
int main(int argc, char *argv[]) { QApplication app(argc, argv);
QSystemTrayIcon trayIcon;
trayIcon.setIcon(QIcon(":/icon.png")); // 设置托盘图标
QMenu trayMenu;
QAction *showAction = trayMenu.addAction("显示窗口");
QAction *quitAction = trayMenu.addAction("退出");
// 当用户点击"显示窗口"时,执行你想要的操作
QObject::connect(showAction, &QAction::triggered, [&app](){
// 显示应用主窗口的代码
app.showNormal();
});
// 当用户点击"退出"时,退出程序
QObject::connect(quitAction, &QAction::triggered, [&app](){
app.quit();
});
//点击托盘图标时显示/隐藏主窗口
QObject::connect(&trayIcon,&QSystemTrayIcon::activated,[&w](QSystemTrayIcon::ActivationReason reason){
//左键单击
if(reason == QSystemTrayIcon::Trigger){
if(w.isHidden()){
w.show();
w.activateWindow(); //激活窗口
}else{
w.hide();
}
}
});
trayIcon.setContextMenu(&trayMenu); // 将菜单设置给系统托盘图标
trayIcon.show(); // 显示系统托盘图标
return app.exec();
}
在这个例子中,我们创建了一个QSystemTrayIcon和一个QMenu。然后,我们添加了两个QAction到菜单中,分别用于"显示窗口"和"退出"。通过信号和槽的连接,我们定义了当用户点击菜单项时应该执行的操作。最后,我们将菜单设置给系统托盘图标,并显示它。
请注意,你需要有一个图标资源,这里使用了:/icon.png,你应该替换为你自己的图标路径。这个例子假设你的应用程序已经有了一个事件循环,这通常是通过调用QApplication::exec()来实现的。