Qt:QListWidget的item上实现右键菜单

Qt:QListWidget的item上实现右键菜单

ID:40573309

大小:22.00 KB

页数:4页

时间:2019-08-04

Qt:QListWidget的item上实现右键菜单_第1页
Qt:QListWidget的item上实现右键菜单_第2页
Qt:QListWidget的item上实现右键菜单_第3页
Qt:QListWidget的item上实现右键菜单_第4页
资源描述:

《Qt:QListWidget的item上实现右键菜单》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:Qt::ContextMenuPolicycontextMenuPolicy()constvoidsetContextMenuPolicy(Qt::ContextMenuPolicypolicy)Qt::ContextMenuPolicy枚举类型包括:Qt::DefaultContextMenu,Qt::NoContextMenu,Qt::PreventContextMenu,Qt::ActionsContextMenu,andQt::CustomCon

2、textMenu。使用方式如下:1)默认是Qt::DefaultContextMenu。它是利用右键菜单事件contextMenuEvent()来处理(whichmeansthecontextMenuEvent()handleriscalled)。就是要重写contextMenuEvent(QContextMenuEvent*event)函数。2)使用Qt::CustomContextMenu。它是发出QWidget::customContextMenuRequested信号,注意仅仅只是发信号,意味着要自己写显示右键菜单的slot。这个信

3、号是QWidget唯一与右键菜单有关的信号(也是自有的唯一信号),同时也是很容易被忽略的signal:voidcustomContextMenuRequested(constQPoint&pos)该信号的发出条件是:用户请求contextMenu(常规就是鼠标右击啦)且同时被击的widget其contextMenuPolicy又是Qt::CustomContextMenu。注意:pos是该widget接收右键菜单事件的位置,一般是在该部件的坐标系中。但是对于QAbstratScrollArea及其子类例外,是对应着其视口viewport()

4、的坐标系。如常用的QTableView、QHeaderView就是QAbstratScrollArea的子类。因为仅发信号,所以需自己写显示右键菜单的slot来响应,例如一个表格(QTableView类型)表头的显示右键菜单槽:datatable->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);connect(datatable->horizontalHeader(),SIGNAL(customContextMenuRequested(constQPoint&

5、)),this,SLOT(show_contextmenu(constQPoint&)));//this是datatable所在窗口QMenu*cmenu=NULL;show_contextmenu(constQPoint&pos){if(cmenu)//保证同时只存在一个menu,及时释放内存{deletecmenu;cmenu=NULL;}QMenucmenu=newQMenu(datatable->horizontalHeader());QAction*ascendSortAction=cmenu->addAction("升序");Q

6、Action*descendSortAction=cmenu->addAction("降序");QAction*filterAction=cmenu->addAction("过滤");QAction*reshowAction=cmenu->addAction("重载");connect(ascendSortAction,SIGNAL(triggered(bool)),this,SLOT(sort_ascend()));connect(descendSortAction,SIGNAL(triggered(bool)),this,SLOT(so

7、rt_descend()));connect(filterAction,SIGNAL(triggered(bool)),this,SLOT(show_filter_dlg()));connect(reshowAction,SIGNAL(triggered(bool)),this,SLOT(reshow_data()));cmenu->exec(QCursor::pos());//在当前鼠标位置显示//cmenu->exec(pos)是在viewport显示}也可先做好cmenu,好处是始终使用一个:QMenucmenu=newQMenu(d

8、atatable->horizontalHeader());QAction*ascendSortAction=cmenu->addAction("升序");QAction*des

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。