Qt里qml中onActivated要换onTrigger报异常 求大神看看 解决必有重谢

qml代码

 CMSystemTrayIcon {
        id: trayIcon
        visible: true

        //onActivated: { trayMenu.showMenu(trayIcon.geometry) }
        onTrigger:{ root.showNormal()}
        onDoubleClick: {trayMenu.showMenu(trayIcon.geometry)}
    }

头文件

#pragma once

#include <QSystemTrayIcon>

class CMSystemTrayIcon : public QSystemTrayIcon {
    Q_OBJECT
    Q_PROPERTY(QRect geometry READ getGeometry CONSTANT)

public:
    Q_ENUM(ActivationReason)
    static void RegisterType();

    CMSystemTrayIcon(QObject* parent = nullptr);

    QRect getGeometry() const;
signals:
    void trigger();
    void doubleclick();

private slots:
    void onActivated(QSystemTrayIcon::ActivationReason reason);

};

Q_DECLARE_METATYPE(QSystemTrayIcon::ActivationReason)

cpp

#include "app/CMSystemTrayIcon.h"

#include <QQmlEngine>

void CMSystemTrayIcon::RegisterType() {
    qRegisterMetaType<ActivationReason>("ActivationReason");
    qmlRegisterType<CMSystemTrayIcon>("CM.App", 1, 0, "CMSystemTrayIcon");
}

CMSystemTrayIcon::CMSystemTrayIcon(QObject* parent)
    : QSystemTrayIcon(parent) {
    setIcon(QIcon(":/images/cm_logo_tray.png"));
}

QRect CMSystemTrayIcon::getGeometry() const {
    return geometry();
}

void CMSystemTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason)
{
    switch (reason)
    {
    case QSystemTrayIcon::DoubleClick:
        emit doubleclick();
    case QSystemTrayIcon::Trigger:
        emit trigger();

    default:
        break;
    }
}

图片说明

求大神帮帮忙啊 实在看不出来错误 必有酬谢

需要把激活的操作换为单双击不同的操作

这是运行时错误,估计是列表越界的问题; onTrigger:{ root.showNormal()} onDoubleClick: {trayMenu.showMenu(trayIcon.geometry)}
这两个函数实现没给出,判断不出来,你可以把这两个函数注释掉,或者用debug调式跟踪,应该容易找出来