QT主窗体右键弹出下拉菜单方法

来源:互联网 发布:淘宝首页登录触摸板 编辑:程序博客网 时间:2024/05/21 13:23
From:http://hi.baidu.com/qinpanke/blog/item/9b6441a60dd3409cd043584f.html

QT主窗体右键弹出下拉菜单方法(我的主窗体的类名是CGuiMainwindow):

void CGuiMainwindow::contextMenuEvent(QContextMenuEvent* e)
{
    QMenu *menu = new QMenu();
    menu->addSeparator();
    menu->addSeparator();
    menu->addAction(Act_Maxsize);
    menu->addSeparator();
    menu->addSeparator();
    menu->addAction(Act_Normal);
    menu->addSeparator();
    menu->addSeparator();
    menu->exec(e->globalPos());
    delete menu;
}
其中Act_MaxsizeAct_Normal是两个QAction 对象指针。我的定义和初始化如下:
QAction*    Act_Maxsize;
QAction*    Act_Normal;
Act_Maxsize     = new QAction(tr("XML"), this);
Act_Maxsize->setIcon(QIcon("Resources/logo.png"));
Act_Normal     = new QAction(tr("SHOW"), this);
Act_Normal->setIcon(QIcon("Resources/logo.png"));
connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));
connect(Act_Normal, SIGNAL(triggered()), this, SLOT(XMLChange()));
 
 
QT内置控件添加右键菜单方法(以QTreeWidget添加右键菜单为例):
connect(moduleTree,SIGNAL(itemPressed(QTreeWidgetItem *, int)),
        this,SLOT(SlotItemClicked(QTreeWidgetItem *, int)));
实现槽函数
void CGuiMainwindow::SlotItemClicked(QTreeWidgetItem *item, int column)
{
    if (qApp->mouseButtons() == Qt::LeftButton)   
    { 
        return; 
    }
    
    if (qApp->mouseButtons() == Qt::RightButton) 
    { 
        if (item->childCount() > 0)
        { 
            return; 
        }
        ShowMenu();   
    }  
}
实现菜单显示功能函数:
void CGuiMainwindow::ShowMenu()
{
    QPoint pos;
    QMenu menu(moduleTree);
    QIcon myIcon("Resources/logo.png");
    menu.addAction(myIcon,tr("菜单_1"));
    menu.addAction(myIcon,tr("菜单_2"));
    menu.addAction(myIcon,tr("菜单_3"));
    menu.addAction(myIcon,tr("菜单_4"));
    menu.addAction(myIcon,tr("菜单_5"));
    menu.addAction(myIcon,tr("菜单_6"));
    menu.exec(QCursor::pos());
}
原创粉丝点击