1

我刚刚安装了 Ubuntu 19.04,并且正在使用它在 apt-get 存储库中提供的 Qt 发行版。我看到 QSytemTrayIcon 信号不会在鼠标单击时发出。我知道“激活”信号的问题,所以我还连接了一个插槽来监听 QSystemTrayIcon 上下文菜单中的“aboutToShow”信号,该信号也应该在鼠标单击时发出。这些信号都不会发出。

这是我的 QSystemTrayIcon 代码:

// Create tray and setup tray icon
void MyClass::createTrayIcon()
{
    m_pTrayIconMenu = new QMenu(this);
    m_pTrayImage    = new QPixmap(IMG_SMALL_NOT_CONNECTED);
    m_pTrayIcon     = new QSystemTrayIcon(this);

    m_pTrayIcon->setContextMenu(m_pTrayIconMenu);

    QIcon icon(*m_pTrayImage);
    m_pTrayIcon->setIcon(icon);
    setWindowIcon(icon);
    m_pTrayIcon->show();

    connect(m_pTrayIconMenu, SIGNAL(aboutToShow()),
            this,            SLOT(onActivated()));
    connect(m_pTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
            this,        SLOT(onActivated(QSystemTrayIcon::ActivationReason)));
}

// Slot to handle context menu aboutToShow signal
void MyClass::onActivated()
{
    if (!this->isVisible())
    {
        this->show();
    }
    else
    {
        this->hide();
    }
}

// Slot to handle tray icon activated signal
void MyClass::onActivated(QSystemTrayIcon::ActivationReason r)
{
    if (r == QSystemTrayIcon::Trigger)
    {
        if (!this->isVisible())
        {
            this->show();
        }
        else
        {
            this->hide();
        }
    }
}

在 Ubuntu 18.04 中,信号全部发出,一切正常。在 Ubuntu 19.04 中,信号不会发出。

4

0 回答 0