国产系统下实际项目中遇到的问题。
qt4中有时候右键托盘图标,调出菜单时会崩溃。
qt5中菜单不能显示QWidgetAction的菜单项。
这两个问题的出现让我废了不少时间排查,尤其是第二个,下面描述下简单的解决办法。
Qt4中需要给托盘设置上下文菜单,并且不能为空,否则会出现崩溃。
而在Qt5中,如果要响应activated(QSystemTrayIcon::ActivationReason)中的QSystemTrayIcon::Context,
那么就不能设置上下文菜单,否则将会直接调用菜单,菜单中的QWidgetAction将会不显示。
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
if (NULL == m_menu) //小于5.0版本需要设置
m_menu = new QMenu(this);
m_sysTray->setContextMenu(m_menu);
#endif