Qt托盘消息通知(②托盘消息通知)

实现思路

  1. 准备消息内容:我们需要定义通知的标题和内容。
  2. 调用 showMessage 方法:使用 showMessage 方法在托盘区域显示通知。
  3. 设置通知图标:可以选择不同的图标来表示不同类型的消息(信息、警告、错误等)。

完整代码示例

在之前的托盘图标工程基础上,我们将添加消息通知的功能。

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();
}

 

代码说明

  1. 显示通知:在 showNotification 槽函数中,调用 trayIcon->showMessage 来显示通知。参数包括:

    • 标题 ("新消息")
    • 内容 ("您有一条新消息!")
    • 图标类型(QSystemTrayIcon::Information
    • 持续时间(3000 毫秒)
  2. 定时器:使用 QTimer 定时器模拟定期发送消息。在每个时间间隔(这里设置为 5 秒)调用 showNotification 方法。

  3. 托盘图标的点击事件:保留了之前的功能,当用户点击托盘图标时,会弹出信息框。

运行程序

编译并运行程序后,您将在每 5 秒看到右下角弹出一个消息通知。您可以根据需要调整通知的标题和内容。

进一步扩展

您可以根据具体需求进一步扩展应用,例如:

  • 添加不同类型的消息(如警告、错误等)。
  • 根据实际的事件触发通知,而不是定时器。
  • 自定义通知的持续时间和样式。
posted @ 2024-11-25 12:37  王廷胡_白嫖帝  阅读(485)  评论(0)    收藏  举报