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

QT右键菜单、右键下拉菜单、各控件响应右键菜单方法简介 【百度空间】

2013-08-09 10:26 387 查看
http://apps.hi.baidu.com/share/detail/24855341
 
QT右键菜单、右键下拉菜单、各控件响应右键菜单方法简介(持续添加更新中......

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_Maxsize和Act_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());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: