QSystemTrayIcon сигналы не излучают при щелчке мыши в Ubuntu 19.04 - PullRequest
1 голос
/ 23 октября 2019

Я только что установил Ubuntu 19.04 и использую дистрибутив Qt, который он предоставляет в репозитории apt-get. Я вижу, что сигналы QSytemTrayIcon не испускаются при щелчке мыши. Мне известны проблемы с «активированным» сигналом, поэтому я также подключил слот для прослушивания сигнала «aboutToShow» из контекстного меню QSystemTrayIcon, который также должен выдаваться при щелчке мыши. Ни один из этих сигналов не выходит.

Вот мой код для 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 сигналы не излучаются.

...