Qt之自定义QLineEdit右键菜单

1、QLineEdit说明

    QLineEdit是单行文本框,不一样于QTextEdit,他只能显示一行文本,一般能够用做用户名、密码和搜索框等。它还提供了一些列的信号和槽,方便咱们使用,有兴趣的小伙伴能够直接去看帮助文档,我在这里就很少废话了。可是呢,我在这里却要单独的说几个接口,由于他们很容易被人忽略,可是却又是一个很好用、能够常常用到的功能。html

  • 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)添加的,post

2、右键菜单定制

    本文描述的3种右键菜单定制,也一样适用于其余继承自QWidget的类。url

首先咱们看下图2所示,这是qt帮助文档中的一个枚举,这个枚举对于制做右键菜单有相当重要的做用,相信大多数的小伙伴确定都见过,也都明白是什么意思。spa

图2 ContextMenuPolicy枚举code

其实qt的命名仍是比较合理的,从英文单词上咱们大概就能知道这个宏的做用,下面我来一次说下这个几个宏的含义。一、没有右键菜单;二、组织右键菜单弹出,不一样于第一个,该宏还阻止事件传递给父窗口;三、缺省的值,右键菜单在窗口类的contextMenuEvent函数中处理;四、使用窗口的action来弹出菜单,这个对于table和tree来讲比较方便;五、右键事件在customContextMenuRequested对应的槽函数中实现,固然了槽须要咱们本身写。htm

方法1:blog

实现customContextMenuRequested信号的接口,并调用setContextMenuPolicy设置Qt::CustomContextMenu参数,使用connect连接,具体示例我就不写了。继承

方法2:接口

设置contextMenuPolicy为Qt::DefaultContextMenu,这个也是默认值,而后实现QWidget类的contextMenuEvent接口,示例代码以下:

1   void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
2   {
3       QMenu *menu = createStandardContextMenu();//默认的标准右键菜单,若是不须要刻意彻底本身实现
4       menu->addAction(tr("My Menu Item"));
5       //...
6       menu->exec(event->globalPos());
7       delete menu;
8   }

方法3:

重写父类的mousePressEvent函数,处理鼠标右键事件,示例代码相似于:

1 void DragList::mousePressEvent(QMouseEvent *event)
2 {
3     if (event->button() == Qt::LeftButton)
4     {
5         startPos = event->pos();
6         dragItem = itemAt(event->pos());
7     }
8     QListWidget::mousePressEvent(event);
9 }

上面的代码我只为了说明问题,没有任何意义。

看到这儿了,基本的右键菜单定制我就差很少描述完了,方法1和方法2都是使用传统的方式,方法3有些取巧。

3、相关文章

  1. Qt之默认菜单语言设置
  2. Qt之弹出式菜单阴影
  3. Qt之自定义检索框
  4. QTextEdit之最大字符数

 

若是您以为文章不错,不妨给个 打赏,写做不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!! 

 

  


很重要--转载声明

  1. 本站文章无特别说明,皆为原创,版权全部,转载时请用连接的方式,给出原文出处。同时写上原做者:朝十晚八 or Twowords
  2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时经过修改本文达到有利于转载者的目的。 

相关文章
相关标签/搜索