在TreeView中增加右键菜单功能

来源:互联网 发布:淘宝刷买家秀平台 编辑:程序博客网 时间:2024/04/30 16:53

实现代码如下:

//头文件中申明;    QMenu *m_grpMenu;    QMenu *m_memberMenu;    QMenu *m_addAreaMenu;    QAction *m_grpAddOneMember;    QAction *m_grpDeleteGrp;    QAction *m_grpAddOneGrp;    QAction *m_memberDelete;    QAction *m_memberMove;    QAction *m_memberSyncTime;        QAction *m_addAreaAction;    QAction *m_grpFlush;    QAction *m_addDev;    void createItemMenu();    void createConnection();//构造函数调用:createItemMenu();createConnection();


void frmMain::createItemMenu(){    m_grpMenu = new QMenu(this);    m_memberMenu = new QMenu(this);    m_addAreaMenu = new QMenu(this);    connect(m_grpMenu,SIGNAL(triggered(QAction *)),            this,SLOT(onGrpMenuTriggered(QAction *)));    connect(m_memberMenu,SIGNAL(triggered(QAction *)),            this,SLOT(onMemberMenuTriggered(QAction *)));    connect(m_addAreaMenu,SIGNAL(triggered(QAction *)),            this,SLOT(onAddAreaMenuTriggered(QAction *)));    m_grpAddOneMember = new QAction(tr("增加子区域"),this);    m_grpAddOneMember->setIcon(QIcon(":/image/add.png"));;    m_grpDeleteGrp = new QAction(tr("删除区域"),this);    m_grpDeleteGrp->setIcon(QIcon(":/image/delete.png"));;    m_grpAddOneGrp = new QAction(tr("增加设备"),this);    m_grpAddOneGrp->setIcon(QIcon(":/image/add.png"));;    m_memberDelete = new QAction(tr("删除设备"),this);    m_memberDelete->setIcon(QIcon(":/image/delete.png"));;    m_memberMove = new QAction(tr("移动设备"),this);    m_memberMove->setIcon(QIcon(":/image/next.png"));;    m_memberSyncTime = new QAction(tr("同步时间"),this);    m_memberSyncTime->setIcon(QIcon(":/image/move.png"));;    m_addAreaAction = new QAction(tr("增加区域"),this);    m_addAreaAction->setIcon(QIcon(":/image/add.png"));;    m_addDev = new QAction(tr("增加设备"),this);    m_addDev->setIcon(QIcon(":/image/add.png"));    m_grpFlush = new QAction(tr("刷新列表"),this);    m_grpFlush->setIcon(QIcon(":/image/update.png"));;}void frmMain::createConnection(){    connect(ui->treeView,SIGNAL(customContextMenuRequested(const QPoint&)),            this,SLOT(onCustomContextMenuRequested(const QPoint&)));}void frmMain::onCustomContextMenuRequested(const QPoint &pos){    QModelIndex idx = ui->treeView->indexAt(pos);    QPoint tmpPos;    tmpPos.setX(pos.x());    tmpPos.setY(pos.y() + 25);    QString tmpFilePath = model->filePath(idx);//    if (!idx.isValid())    if(tmpFilePath.count() == 0)    {        currentFilePath.clear();        currentFilePath.append("./");        if (m_addAreaMenu->isEmpty())        {            //增加区域            m_addAreaMenu->addAction(m_addAreaAction);            m_addAreaMenu->addAction(m_addDev);            m_addAreaMenu->addAction(m_grpFlush);        }        m_addAreaMenu->popup(ui->treeView->mapToGlobal(tmpPos));    }    else if(QString(tmpFilePath.at(tmpFilePath.count()-1)) == "】")    {        if (m_grpMenu->isEmpty())        {            //增加子区域            m_grpMenu->addAction(m_grpAddOneMember);            //删除区域            m_grpMenu->addAction(m_grpDeleteGrp);            m_grpMenu->addAction(m_grpAddOneGrp);        }        m_grpMenu->popup(ui->treeView->mapToGlobal(tmpPos));    }    else    {        if (m_memberMenu->isEmpty())        {            //删除设备            m_memberMenu->addAction(m_memberDelete);            //移动设备            m_memberMenu->addAction(m_memberMove);            //同步时间            m_memberMenu->addAction(m_memberSyncTime);        }        m_memberMenu->popup(ui->treeView->mapToGlobal(tmpPos));    }}void frmMain::onGrpMenuTriggered(QAction *action){    if (action == m_grpAddOneMember)    {//增加子区域    }    else if (action == m_grpDeleteGrp)    {//删除区域    }    else if(action == m_grpAddOneGrp)    {        //在区域下增加设备    }}void frmMain::onMemberMenuTriggered(QAction *action){    if (action == m_memberDelete)    {//删除设备    }    else if(action == m_memberMove)    {//移动设备    }    else if(action == m_memberSyncTime)    {//同步时间    }}void frmMain::onAddAreaMenuTriggered(QAction *action){    if (action == m_addAreaAction)    {//增加区域    }    if(action == m_addDev)    {//增加设备    }    if(action == m_grpFlush)    {//增加设备    }}


0 0
原创粉丝点击