您的位置:首页 > 编程语言 > Qt开发

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

2012-04-19 09:43 253 查看
From:http://hi.baidu.com/qinpanke/blog/item/9b6441a60dd3409cd043584f.html
QT主窗体右键弹出下拉菜单方法(我的主窗体的类名是CGuiMainwindow):

voidCGuiMainwindow::contextMenuEvent(QContextMenuEvent*e)

{

QMenu*menu=newQMenu();

menu->addSeparator();

menu->addSeparator();

menu->addAction(Act_Maxsize);

menu->addSeparator();

menu->addSeparator();

menu->addAction(Act_Normal);

menu->addSeparator();

menu->addSeparator();

menu->exec(e->globalPos());

deletemenu;

}


其中Act_Maxsize和Act_Normal是两个QAction对象指针。我的定义和初始化如下:

QAction*Act_Maxsize;

QAction*Act_Normal;

Act_Maxsize=newQAction(tr("XML"),this);

Act_Maxsize->setIcon(QIcon("Resources/logo.png"));

Act_Normal=newQAction(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)));


实现槽函数


voidCGuiMainwindow::SlotItemClicked(QTreeWidgetItem*item,intcolumn){
if(qApp->mouseButtons()==Qt::LeftButton)
{
return;
}
if(qApp->mouseButtons()==Qt::RightButton)
{
if(item->childCount()>0)
{
return;
}
ShowMenu();
}
}
实现菜单显示功能函数:
voidCGuiMainwindow::ShowMenu()
{
QPointpos;
QMenumenu(moduleTree);
QIconmyIcon("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());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: