Qt QWidget右键菜单实例

1.新建工程mouseRightPressItemTest,选择QWidget作为界面。

 

 2.在widget.h中声明右键事件处理函数void contextMenuEvent(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 ItemPressed."。如果要实现其他右键菜单响应函数,则进行相应的编辑。
 
connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));

http://blog.sina.com.cn/s/blog_98a4dde701013dzh.html
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值