Qt QWidget右键菜单实例

来源:互联网 发布:张继科垃圾知乎 编辑:程序博客网 时间:2024/05/16 10:03
1.新建工程mouseRightPressItemTest,选择QWidget作为界面。

 

 2.在widget.h中声明右键事件处理函数voidcontextMenuEvent(QContextMenuEvent*);为公有成员函数,并在widget.cpp中实现。

   void Widget::contextMenuEvent(QContextMenuEvent*) //右键菜单项编辑

{ 
 QCursor cur=this->cursor(); 
 QMenu *menu=new QMenu(this); 
 menu->addAction(Act_Maxsize); //添加菜单项1 
 menu->addAction(Act_Normal); //添加菜单项2 
 menu->exec(cur.pos()); //关联到光标 
} 
 此处注意Act_Maxsize,Act_Normal为在widget.h中声明的私有成员变量: 
private: 
 Ui::Widget *ui; 
 
 QAction* Act_Maxsize; 
 QAction* Act_Normal; 
  
同时在widget.h中添加头文件QACtion,在widget.cpp中添加头文件 
#include <QMenu> 
#include <QCursor> 
  
 3.初始化菜单项并关联槽函数 
在widget.cpp中添加如下代码 
 Widget::Widget(QWidget *parent) : 
 QWidget(parent), 
 ui(new Ui::Widget) 
{ 
 ui->setupUi(this); 
 
 Act_Maxsize = new QAction(tr("XML"), this); 
  Act_Normal = new QAction(tr("SHOW"), this); 
 connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange())); 
 connect(Act_Normal, SIGNAL(triggered()), this, SLOT(XMLChange())); 
} 
  
4.实现槽函数,此处使用QDebug输出信息(注意添加#include <QDebug> 
在widget.h中添加私有槽函数(private slots)并实现如下 
private slots: 
 void ADDChange() 
 { 
 qDebug()<<"XML Item Pressed."; 
 } 
 
 void XMLChange() 
 { 
 qDebug()<<"SHOW Item Pressed."; 
 } 
  
最后编译运行,当右键单击点击XML菜单项时输出“XML Item Pressed.”;点击SHOW时输出"SHOW Item Pressed."。如果要实现其他右键菜单响应函数,则进行相应的编辑。 
 
 connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange())); 
原创粉丝点击