QSystemTrayIcon DoubleClick Activation会产生两个触发事件

时间:2016-02-08 04:37:43

标签: qt qt4 qt5 trayicon

我正在开发一个应用程序,我有一个系统托盘图标。我试图抓住系统托盘中的QSystemTrayIcon::DoubleClick。由于某种原因,我不明白,我一直无法抓住。取而代之的是,我只收到两个QSystemTrayIcon::Trigger个事件。我使用Qt4(v4.8.7)和Qt5(v5.5.1)尝试了这一点。在Debian测试中,我的平台是KDE / Plasma 5(v5.4.3)。我甚至在Debian测试中提供的LXDE上测试了它。

所以我的问题是:这是Qt中的一个错误还是其他一些问题?

/* My Header File */

class MyTrayIcon : public QSystemTrayIcon {
    Q_OBJECT

    public :
        NBTrayIcon();

    public slots:
        void handleActivation( QSystemTrayIcon::ActivationReason reason );

    private slots:
        void toggleVisible();
        void showInfo();
        void quit();

    Q_SIGNALS:
        void newWindow();
};

/* My Cpp File */

MyTrayIcon::MyTrayIcon() : QSystemTrayIcon() {

    setIcon( QIcon( ":/icons/newbreeze.png" ) );
    connect( this, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), this, SLOT( handleActivation( QSystemTrayIcon::ActivationReason ) ) );

    QMenu *menu = new QMenu( "TrayMenu" );
    menu->addAction( "&Toggle Visible Windows", this, SLOT( toggleVisible() ) );
    menu->addAction( QIcon::fromTheme( "application-exit", QIcon( ":/icons/delete.png" ) ), "&Quit NewBreeze", this, SLOT( quit() ) );
    setContextMenu( menu );
};

void MyTrayIcon::handleActivation( QSystemTrayIcon::ActivationReason reason ) {

    qDebug() << reason;

    switch( reason ) {
        case MyTrayIcon::Context: {
            qDebug() << "Context";
            break;
        };

        case MyTrayIcon::MiddleClick: {
            qDebug() << "Middle Click";
            break;
        };

        case MyTrayIcon::Trigger: {
            qDebug() << "Trigger";
            break;
        }

        case MyTrayIcon::DoubleClick: {
            qDebug() << "DoubleClick";
            break;
        };

        default:{
            qDebug() << reason;
            break;
        };
    };
};

PS:我已经添加了上面列出的代码。

0 个答案:

没有答案