qmenu的显示与隐藏使用 m_pmenu_multinet->menuAction()->setVisible(false);
直接用m_pmenu_multinet->setVisible(false); 或者 m_pmenu_multinet->hide() 是没有效果的。
m_pmenu_multinet = new QMenu(QString::fromLocal8Bit("多网切换"),m_menu);
m_pmenu_multinet->setIcon(QIcon(":/icon/menu_log.png"));
m_menu->addMenu(m_pmenu_multinet);
void SystemTray::slot_multinet(QStringList strInfo)
{
if(strInfo.empty()) {
m_pmenu_multinet->clear();
m_pmenu_multinet->menuAction()->setVisible(false);
return;
}
m_pmenu_multinet->clear();
QList<QAction*> ListAct;
QList<QString>::iterator it = strInfo.begin();
for(;it !=strInfo.end();it++){
QAction* act = new QAction(*it,m_pmenu_multinet);
act->setObjectName(*it);
connect(act, SIGNAL(triggered()), this, SLOT(slot_multinetActionClicked()));
ListAct.push_back(act);
}
m_pmenu_multinet->addActions(ListAct);
m_pmenu_multinet->menuAction()->setVisible(true);
}
void SystemTray::slot_multinetActionClicked()
{
QString str = this->sender()->objectName();
//QObject *object = QObject::sender();
//QPushButton *push_button = qobject_cast<QPushButton *>(object);
CMutiNetDlg dlg(str,this);
dlg.exec();
}