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

Qt QWidget右键菜单实例

2015-08-24 23:56 531 查看
1.新建工程mouseRightPressItemTest,选择QWidget作为界面。2.在widget.h中声明右键事件处理函数voidcontextMenuEvent(QContextMenuEvent*);为公有成员函数,并在widget.cpp中实现。voidWidget::contextMenuEvent(QContextMenuEvent*)//右键菜单项编辑
{
QCursorcur=this->cursor();
QMenu*menu=newQMenu(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(newUi::Widget)
{
ui->setupUi(this);
Act_Maxsize=newQAction(tr("XML"),this);
Act_Normal=newQAction(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中添加私有槽函数(privateslots)并实现如下
privateslots:
voidADDChange()
{
qDebug()<<"XMLItemPressed.";
}
voidXMLChange()
{
qDebug()<<"SHOWItemPressed.";
}
最后编译运行,当右键单击点击XML菜单项时输出“XMLItemPressed.”;点击SHOW时输出"SHOWItemPressed."。如果要实现其他右键菜单响应函数,则进行相应的编辑。
connect(Act_Maxsize,SIGNAL(triggered()),this,SLOT(ADDChange()));
http://blog.sina.com.cn/s/blog_98a4dde701013dzh.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: