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模拟网页中自定义鼠标右键菜单
题外话.......最近在开发一个网站项目的时候,需要用到网页自定义右键菜单,在网上看了各路前辈大神的操作,头晕目眩,为了达到目的,突然灵机一动,于是便有了这篇文章. 先放个效果图(沾沾自喜,大神勿喷 ...
随机推荐
- HTTP状态码(HTTP Status Code)及常用场景
常见的状态码: HTTP: Status 200 – 服务器成功返回网页HTTP: Status 3xx - 表示要完成请求,需要进一步操作. 通常,这些状态代码用来重定向HTTP: Status 4 ...
- Web开发人员常犯的10个错误
说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框 ...
- 互联网的寒冬来了,BAT都不社招了
一 总理上次来到创业街,是四个月,要不就是五个月前了. 之后,全国创业形势一路走红,锣鼓喧天鞭炮齐鸣.大众创业万众创新,颇有大炼钢铁亩产万斤之势,尤其在媒体上. 再之后,2015 进入下半年,风投圈的 ...
- 调用axis2开发的接口遇到的问题
第1个异常 [org.apache.struts.actions.DispatchAction] – Dispatch[/myservice/NgCallServiceInfo] to method ...
- mahout分类学习和遇到的问题总结
这段时间学习Mahout有喜有悲.在这里首先感谢樊哲老师的指导.以下列出关于这次Mahout分类的学习和遇到的问题,还请大家多多提出建议:(全部文件操作都使用是在hdfs上边进行的). (本人用的环境 ...
- 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
一.df 命令:df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置: 举例: [root@localhost beinan] ...
- [转载] Calculating Entropy
From: johndcook.com/blog For a set of positive probabilities pi summing to 1, their entropy is defi ...
- [GraphQL] Write a GraphQL Schema in JavaScript
Writing out a GraphQL Schema in the common GraphQL Language can work for simple GraphQL Schemas, but ...
- iOS开发——程序员必备&iOS安装包的三种格式 deb、ipa 和 pxl的解释和说明
iOS安装包的三种格式 deb.ipa 和 pxl的解释和说明 目前 iOS 平台上常见的安装包有三种,deb.ipa 和 pxl.转自链接:http://fanlb.blogbus.com/logs ...
- Rxlifecycle(一):使用
Rxlifecycle使用非常方便简单,如下: 1.集成 build.gradle添加 //Rxlifecycle compile 'com.trello:rxlifecycle:0.3.1' com ...