Qt之自定义QLineEdit右键菜单
一、QLineEdit说明
QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名、密码和搜索框等。它还提供了一些列的信号和槽,方便我们使用,有兴趣的小伙伴可以直接去看帮助文档,我在这里就不多废话了。但是呢,我在这里却要单独的说几个接口,因为他们很容易被人忽略,但是却又是一个很好用、可以经常用到的功能。
- addAction(QAction *action, ActionPosition position):可以在编辑框的开始或者末尾添加一个action,方便我们操作,一个完美的搜索框顿时出现。
- setEchoMode(EchoMode):文本显示模式,通过这个接口可以设置成为密码框,其中的参数意思一次为:正常、什么都不显示、密码、刚输入时显示字符紧接着变成密码状态
- setCompleter(QCompleter *c):看这个单词的意思:完成。顾名思义这个借口可以设置文编辑框编辑时自动补齐的功能,类似于百度输入框的自动提示功能,如果想要了解细节功能请自行百度,或者移步QCompleter自动补全
- setSelection(int start, int length):设置是否能选中文本
- setValidator(const QValidator *v):内容验证器
图1 addAction使用截图
如图1所示,是addAction使用截图,右侧按钮图标是我使用style()->standardPixmap(QStyle::SP_TitleBarMinButton)添加的,
二、右键菜单定制
本文描述的3种右键菜单定制,也同样适用于其他继承自QWidget的类。
首先我们看下图2所示,这是qt帮助文档中的一个枚举,这个枚举对于制作右键菜单有至关重要的作用,相信大多数的小伙伴肯定都见过,也都明白是什么意思。
图2 ContextMenuPolicy枚举
其实qt的命名还是比较合理的,从英文单词上我们大概就能知道这个宏的作用,下面我来一次说下这个几个宏的含义。1、没有右键菜单;2、组织右键菜单弹出,不同于第一个,该宏还阻止事件传递给父窗口;3、缺省的值,右键菜单在窗口类的contextMenuEvent函数中处理;4、使用窗口的action来弹出菜单,这个对于table和tree来说比较方便;5、右键事件在customContextMenuRequested对应的槽函数中实现,当然了槽需要我们自己写。
方法1:
实现customContextMenuRequested信号的接口,并调用setContextMenuPolicy设置Qt::CustomContextMenu参数,使用connect链接,具体示例我就不写了。
方法2:
设置contextMenuPolicy为Qt::DefaultContextMenu,这个也是默认值,然后实现QWidget类的contextMenuEvent接口,示例代码如下:
void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = createStandardContextMenu();//默认的标准右键菜单,如果不需要刻意完全自己实现
menu->addAction(tr("My Menu Item"));
//...
menu->exec(event->globalPos());
delete menu;
}
方法3:
重写父类的mousePressEvent函数,处理鼠标右键事件,示例代码类似于:
void DragList::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
startPos = event->pos();
dragItem = itemAt(event->pos());
}
QListWidget::mousePressEvent(event);
}
上面的代码我只为了说明问题,没有任何意义。
看到这儿了,基本的右键菜单定制我就差不多描述完了,方法1和方法2都是使用传统的方式,方法3有些取巧。
三、相关文章
![]() |
![]() |
很重要--转载声明
- 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
- 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
Qt之自定义QLineEdit右键菜单的更多相关文章
- javascript自定义浏览器右键菜单
javascript自定义浏览器右键菜单 在书上看到document对象还有一个contextmenu事件,但是不知为什么w3school中找不到这个耶... 利用这个特性写了个浏览器的右键菜单, ...
- QT学习之窗口右键菜单
#QT学习之窗口右键菜单 QWidget 及其子类都有右键菜单,主要因为其有两个与右键菜单相关联的函数: Qt::ContextMenuPolicy contextMenuPlicy() const ...
- 完美拖拽 &&仿腾讯微博效果&& 自定义多级右键菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- NX二次开发-自定义添加右键菜单RegisterConfigureContextMenuCallback
首先声明这个知识我以前不知道,是夏天的时候看到别人在唐工的QQ群里问的,唐工说西门子官方有这个例子.那个时候我因为在忙其他事情,也就没去研究那个右键菜单到底是怎么做的.关于自定义添加右键菜单Regis ...
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- 【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101art3.html 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候 ...
- vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...
- JQuery模拟网页中自定义鼠标右键菜单
题外话.......最近在开发一个网站项目的时候,需要用到网页自定义右键菜单,在网上看了各路前辈大神的操作,头晕目眩,为了达到目的,突然灵机一动,于是便有了这篇文章. 先放个效果图(沾沾自喜,大神勿喷 ...
随机推荐
- libevent 安装异常
有homebrew的可以使用 1 brew install memcached 这个命令来安装没有homebrew的可以直接手动安装1.去官网http://memcached.org/下载最新的包,然 ...
- oratop 各个指标项说明
Section 1- oratop and database/instance specifics spid :oratop's server SPID connected to inst ...
- xml转换之
1.XStream public static <T> T toBean(String xmlStr, Class<T> cls) { XStream xstream = ne ...
- nodejs express 框架解密3-中间件模块
本文档是基于express 3.4.6 的 在上篇中我们提到了中间件,这篇主要解释这个模块,middleware.js 为: var utils = require('./utils'); /** * ...
- .NET分布式事务--TransactionScop
一.开启DTC服务 方式一 计算机—管理—服务—Distributed Transaction Coordinator—属性—开启 方式二 CMD命令子界面输入:net start msdtc 二.设 ...
- ECSHOP始终显示全部分类方法
商品分类树需要始终显示所有类别,默认的Ecshop的显示方式为在当前产品页面只显示当前的产品所在的同级及下级分类,这就导致当点开某个产品或者子分 类的时候全局的分类树就不见了. 其实修改的方法很简单. ...
- ASP.NET 4.0 forms authentication issues with IE11
As I mentioned earlier, solutions that rely on User-Agent sniffing may break, when a new browser or ...
- SAP GUI SAPLOGON.INI
GUI是SAP系统最常用的客户端,在一台客户机上,利用GUI可以连接多套SAP系统(连接方法参见<客户端连接配置(SAP GUI 710)>),也可以设置多个快捷方式登录(参见<用快 ...
- 精选29款非常实用的jQuery应用插件
今天我们来分享一些实用的jQuery应用插件,没有特别花哨,但都比较实用,jQuery菜单.jQuery图片都有涉及到,一起来看看. 1.jQuery+CSS3仿IOS无线局域网Wifi DEMO演示 ...
- 将Word转为带书签的PDF
将word文档存为PDF可以带来很多便利,在这里就不多说了.下面讨论一下转换方法. 我现在使用的是Word2010+Acrobat9,所以这里仅讨论使用这种组合的转换方法. 在Word2010中有两种 ...

