加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt QWidget右键菜单实例

(2012-04-27 20:51:17)
标签:

it

分类: QT

 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 Item Pressed."。如果要实现其他右键菜单响应函数,则进行相应的编辑。

    connect(Act_Maxsize, SIGNAL(triggered()), this, SLOT(ADDChange()));

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有