(四)Qt之右键菜单
1、右键菜单创建和显示
作为一种交互性强、使用方便的右键菜单在程序中是非常常用的,在Qt中可以轻松的实现。
QMenu menu;//添加菜单项,指定图标、名称、响应函数menu.addAction(QIcon("1.png"), QStringLiteral("添加"),this,SLOT(OnBscGroupRightAction()));//在鼠标位置显示menu.exec(QCursor::pos());
2、右键菜单关联控件
QWidget及其子类都可有右键菜单,首先设置QWidget与右键菜单有关的函数setContextMenuPolicy(),属性对应项为contextmenuPolicy。
setContextMenuPolicy函数的参数为枚举类型Qt::ContextMenuPolicy,qt帮助文档中有相应介绍:

a、Qt::DefaultContextMenu
默认是Qt::DefaultContextMenu,它是利用右键菜单事件contextMenuEvent()来处理(which means the contextMenuEvent() handler is called)。就是要重写contextMenuEvent( QContextMenuEvent * event )函数。
你可以通过UI属性来设置:

void MainWindow::contextMenuEvent(QContextMenuEvent *event){QMenu Context;Context.addAction(ui->actionAdd);Context.exec(QCursor::pos());}
b、Qt::CustomContextMenu
它是发出QWidget::customContextMenuRequested信号,注意仅仅只是发信号,意味着要自己写显示右键菜单的slot。这个信号是QWidget唯一与右键菜单有关的信号(也是自有的唯一信号),同时也是很容易被忽略的signal:
void customContextMenuRequested ( const QPoint & pos )
一般来说为了方便,我们会省略自己添加connect来关联槽函数,而是采用默认的槽函数,默认槽函数命名规则:void on_控件ID_customContextMenuRequested(const QPoint &pos);
void BscServer::on_treeView_customContextMenuRequested(const QPoint &pos){QModelIndex index=ui.treeView->currentIndex();QStandardItem *item = m_pMenuMgr->GetModel()->itemFromIndex(index);CMenuItemData *data = dynamic_cast<CMenuItemData*>(item);//根据右键类容显示菜单ShowContextMenu(data);}
c、Qt::ActionsContextMenu
该类型比较简单,直接使用QWidget::actions()函数添加动作即可,点击右键就会自动弹出菜单。
如对于QTableView控件,设置如下:

//添加右键菜ui.tableView->addAction(ui.action_add);ui.tableView->addAction(ui.action_del);//右键处理事件connect(ui.action_add, SIGNAL(triggered()), this, SLOT(addRecord()));connect(ui.action_del, SIGNAL(triggered()), this, SLOT(delRecord()));
(四)Qt之右键菜单的更多相关文章
- QT treewidget 右键菜单
VS2012+QT5.2 ,没有ui,纯代码实现右键 方法一:常规但略麻烦 1.头文件slot中声明 QTreeWidget *tree; void showrightMenu(QPoint);//显 ...
- Qt添加右键菜单
QAction *hideAction = new QAction(tr(" 隐藏"),this); addAction(hideAction); setContextMenuPo ...
- QML添加右键菜单
MouseArea { id: mouseRegion anchors.fill: parent; acceptedButtons: Qt.LeftButton | Qt.RightButton // ...
- Qt之QAbstractItemView右键菜单
一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式 ...
- Qt之自定义QLineEdit右键菜单
一.QLineEdit说明 QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名.密码和搜索框等.它还提供了一些列的信号和槽,方便我们使用,有兴趣的小伙伴可 ...
- Qt——右键菜单
所谓“右键菜单”,我们可以这样来看:右键+菜单.所以我们可以定义一个菜单,然后重写鼠标点击事件,令菜单在鼠标右击的时候弹出来.这种方法是可以的,但是Qt提供了一种专门用于右键菜单的方法,且看下面这个属 ...
- Qt之密码框不可选中、复制、粘贴、无右键菜单等
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
随机推荐
- Jquery中$与$.fn的差别
当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式.良好的浏览器兼容性赢得了软件研发同行的青睐,作为当中的一员,自然也不例外,虽然刚開始时非常排斥Jquery,今天我谈一下对J ...
- [RxJS] Introduction to RxJS Marble Testing
Marble testing is an expressive way to test observables by utilizing marble diagrams. This lesson wi ...
- Android下将图片载入到内存中
Android的系统的标准默认每一个应用程序分配的内存是16M.所以来说是很宝贵的,在创建应用的时候要尽可能的去节省内存,可是在载入一些大的文件的时候,比方图片是相当耗内存的,一个1.3M的图片,分辨 ...
- ORACLE触发器具体解释
ORACLE PL/SQL编程之八: 把触发器说透 本篇主要内容例如以下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 ...
- ABAP FIELD-SYMBOLS 有大作用- 将没有可改参数的增强出口变得也能改主程序的值了
看下图代码: report z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form 和 function zbapi_test , 这两 ...
- MySQL并发复制系列三:MySQL和MariaDB实现对比
http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...
- linux 安装xamp
前一久用上了ubuntu,想折腾下小窝,懒得自己去装Php啊,apache 之类的东西,刚才用上xampp,直接点,等以后要涉及深再弄,暂时先用着xampp.还不错,很好用,这里简单说下安装,(我是新 ...
- 使用ReactiveCocoa开发RSS阅读器
目前已经完成的功能有对RSS的解析和Atom解析,RSS内容本地数据库存储和读取,抓取中状态进度展示,标记阅读状态,标记全部已读等.这些功能里我对一些异步操作产生的数据采用了ReactiveCocoa ...
- 1. Android 系统上一款开源的图表库
1. MPAndroidChart MPAndroidChart 是 Android 系统上一款开源的图表库.目前提供线图和饼图,支持选择.缩放和拖放. 一个可以拖动缩放的图表库,包含曲线图.直方图 ...
- Android studio设置参数提示
在Android studio的使用的过程中,那么就需要对当前的代码显示当前的方式做一个的提示信息,那么可以通过Android studio的的设置的方法,来对Android studio方法的提示显 ...