Qt托盘消息通知(②托盘消息通知)
实现思路
- 准备消息内容:我们需要定义通知的标题和内容。
- 调用
showMessage方法:使用showMessage方法在托盘区域显示通知。 - 设置通知图标:可以选择不同的图标来表示不同类型的消息(信息、警告、错误等)。
完整代码示例
在之前的托盘图标工程基础上,我们将添加消息通知的功能。
main.cpp
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QMessageBox>
#include <QTimer>
class TrayApp : public QObject {
public:
TrayApp() {
// 创建托盘图标
trayIcon = new QSystemTrayIcon();
trayIcon->setIcon(QIcon(":/Image/QQ图标.png")); // 替换为您的图标路径
trayIcon->setToolTip("托盘图标示例");
// 创建菜单
QMenu *menu = new QMenu();
QAction *exitAction = menu->addAction("退出");
connect(exitAction, &QAction::triggered, qApp, &QApplication::quit);
trayIcon->setContextMenu(menu);
trayIcon->show();
// 连接托盘图标的点击事件
connect(trayIcon, &QSystemTrayIcon::activated, this, &TrayApp::iconActivated);
// 定时器用于模拟消息通知
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &TrayApp::showNotification);
timer->start(5000); // 每5秒显示一次通知
}
private slots:
void iconActivated(QSystemTrayIcon::ActivationReason reason) {
if (reason == QSystemTrayIcon::Trigger) {
QMessageBox::information(nullptr, "托盘图标", "托盘图标被点击了!");
}
}
void showNotification() {
trayIcon->showMessage("新消息", "您有一条新消息!", QSystemTrayIcon::Information, 3000);
}
private:
QSystemTrayIcon *trayIcon;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false); // 最后一个窗口关闭时不退出
TrayApp trayApp; // 创建托盘应用的实例
return app.exec();
}
代码说明
-
显示通知:在
showNotification槽函数中,调用trayIcon->showMessage来显示通知。参数包括:- 标题 ("新消息")
- 内容 ("您有一条新消息!")
- 图标类型(
QSystemTrayIcon::Information) - 持续时间(3000 毫秒)
-
定时器:使用
QTimer定时器模拟定期发送消息。在每个时间间隔(这里设置为 5 秒)调用showNotification方法。 -
托盘图标的点击事件:保留了之前的功能,当用户点击托盘图标时,会弹出信息框。
运行程序
编译并运行程序后,您将在每 5 秒看到右下角弹出一个消息通知。您可以根据需要调整通知的标题和内容。
进一步扩展
您可以根据具体需求进一步扩展应用,例如:
- 添加不同类型的消息(如警告、错误等)。
- 根据实际的事件触发通知,而不是定时器。
- 自定义通知的持续时间和样式。

浙公网安备 33010602011771号