QMenu子菜单

  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 ListAct;
    QList::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(object);

    CMutiNetDlg dlg(str,this);
    dlg.exec();
}

你可能感兴趣的:(qt)