QT treewidget 右键菜单
VS2012+QT5.2 ,没有ui,纯代码实现右键
方法一:常规但略麻烦
1、头文件slot中声明
QTreeWidget *tree;
void showrightMenu(QPoint);//显示树目录右键菜单
2、源文件中
tree = new QTreeWidget;
tree->setHeaderHidden(true);//隐藏树的标题栏
tree->setContextMenuPolicy(Qt::CustomContextMenu);//右键 不可少否则右键无反应
connect(tree,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showrightMenu(QPoint)));
并实现槽函数
void classname::showrightMenu(QPoint point)
{
popMenu->clear();//清除原有菜单
popMenu->addAction(expandallAction);//如果放这是全局都有的右键
popMenu->addAction(foldedallAction);
//QTreeWidgetItem *item = tree->itemAt(point); //可得到右键条目
popMenu->exec(QCursor::pos());
}
其中expandallAction、foldedallAction及其方法的实现都是和菜单的一样如下:
声明:
QAction *expandallAction;
QAction *expandoneAction;
void expandalltreeItem();//右键展开所有树的条目
void foldedalltreeItem();//右键折叠所有树的条目
实现:
popMenu = new QMenu(this);
expandallAction = new QAction(QStringLiteral("展开全部"),this);
expandallAction->setStatusTip(QStringLiteral("展开全部"));
foldedallAction = new QAction(QStringLiteral("折叠全部"),this);
foldedallAction->setStatusTip(QStringLiteral("折叠全部"));
connect(expandallAction,SIGNAL(triggered()),this,SLOT(expandalltreeItem()));
connect(foldedallAction,SIGNAL(triggered()),this,SLOT(foldedalltreeItem()));
void classname::expandalltreeItem()
{
tree->expandAll();
}
void classname::foldedalltreeItem()
{
tree->collapseAll();
}
方法二 简单有效
声明void contextMenuEvent ( QContextMenuEvent * event ); //右键坐标定位
实现:
void classname::contextMenuEvent(QContextMenuEvent * event )
{
popMenu->clear();//清除原有菜单
popMenu->addAction(expandallAction);//如果放这是全局都有的右键
popMenu->addAction(foldedallAction);
QPoint point = event->pos();//得到鼠标的位置全局坐标
QTreeWidgetItem *item = tree->itemAt(point);
popMenu->exec(QCursor::pos());//菜单出现的位置为当前鼠标的位置
event->accept();
}
其中expandallAction、foldedallAction及其方法的实现如上
区别:方法一的右键有效区为tree,也就是目录区,方法二右键的有效区为全部屏幕
QT treewidget 右键菜单的更多相关文章
- (四)Qt之右键菜单
1.右键菜单创建和显示 作为一种交互性强.使用方便的右键菜单在程序中是非常常用的,在Qt中可以轻松的实现. QMenu menu; //添加菜单项,指定图标.名称.响应函数 menu.addActio ...
- Qt添加右键菜单
QAction *hideAction = new QAction(tr(" 隐藏"),this); addAction(hideAction); setContextMenuPo ...
- QML添加右键菜单
MouseArea { id: mouseRegion anchors.fill: parent; acceptedButtons: Qt.LeftButton | Qt.RightButton // ...
- Qt——右键菜单
所谓“右键菜单”,我们可以这样来看:右键+菜单.所以我们可以定义一个菜单,然后重写鼠标点击事件,令菜单在鼠标右击的时候弹出来.这种方法是可以的,但是Qt提供了一种专门用于右键菜单的方法,且看下面这个属 ...
- Qt之QAbstractItemView右键菜单
一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式 ...
- Qt之自定义QLineEdit右键菜单
一.QLineEdit说明 QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名.密码和搜索框等.它还提供了一些列的信号和槽,方便我们使用,有兴趣的小伙伴可 ...
- Qt之密码框不可选中、复制、粘贴、无右键菜单等
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】
简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...
随机推荐
- Powershell Exchange Server UP Time
Server up time Get-ExchangeServer | where{$_.name -like'wendy*'} | %{ if(Test-Connection $_.name -Co ...
- Spoken English Practice( let me just pull over(pull,give))
绿色:连读: 红色:略读: 蓝色:浊化: 橙色:弱读 下划线_为浊化 口语蜕变(2017/6/26) ...
- 微信支付 301 500 php 7 simplexml_load_string
w simplexml_load_string http://stackoverflow.com/questions/35593521/php-7-simplexml
- Python菜鸟之路:原生Ajax/Jquery Ajax/IFrame Ajax的选用
原生Ajax Jquery Ajax IFrame Ajax 如果发送的是普通的数据,比如用户简单的输入.选择的值,推荐使用Jquery ,其次用XMLHttpRquest对象,最次使用IFrame ...
- Java 语言基础之运算符
使用运算符之后,肯定有返回结果. 六种运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三元运算符 1. 算术运算符 加(+), 减(-), 乘(*), 除(/), 取余(%), 自 ...
- 轻松理解MYSQL MVCC 实现机制
轻松理解MYSQL MVCC 实现机制 转载https://blog.csdn.net/whoamiyang/article/details/51901888 1. MVCC简介 1.1 什么是MVC ...
- 原!!win7-64 安装python的 redis客户端库
安装python的redis客户端库 本人系统已装python2.7 利用cmd命令行: 1.cmd-->python -->>>进入python命令下 >>> ...
- JDK源代码学习系列05----LinkedList
JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向 ...
- 用仿ActionScript的语法来编写html5——第四篇,继承与简单的rpg
第四篇,继承与简单的rpg 这次用继承自LSprite的类来实现简单的rpg的demo先看一下最后的代码与as的相似度 var backLayer; //地图 var mapimg; //人物 var ...
- python1变量,表达式和语句
1.变量和类型 变量是指向各种类型值的名字,以后再用到某个值时,直接引用这个名字即可,不用再写具体的值,在python中,变量的使用环境非常宽松,没有明显的变量声明,而且类型不是固定的.如果你不能确定 ...