我刚刚安装了 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 中,信号不会发出。