Qt 密码框不可选中、复制、粘贴、无右键菜单等
来源:互联网 发布:创意视频制作软件 编辑:程序博客网 时间:2024/06/05 00:15
在做用户登录、修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同。
例如:不能选中、复制、粘贴、无右键菜单等功能,当然设置密码不可见是必须的!
一般的密码框:(默认 可以选中,复制,粘贴,有右键菜单)
QLineEdit *pCommonLineEdit = new QLineEdit(this);pCommonLineEdit->setPlaceholderText(QStringLiteral("密码由字母、数字、下划线组成,长度8-16位"));pCommonLineEdit->setEchoMode(QLineEdit::Password);
下面进行一些设置:不可选择,没有右键菜单
1.可以进行事件重写去完成
class PasswordLineEdit : public QLineEdit{ Q_OBJECTpublic: explicit PasswordLineEdit(QWidget *parent = 0); ~PasswordLineEdit();protected: virtual void keyPressEvent(QKeyEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event);};
PasswordLineEdit::PasswordLineEdit(QWidget *parent) : QLineEdit(parent){ //设置无右键菜单 setContextMenuPolicy(Qt::NoContextMenu); //设置无输入时密码提示 setPlaceholderText(QStringLiteral("请输入密码")); //设置密码隐藏 setEchoMode(QLineEdit::Password); //设置最大长度16位 setMaxLength(16);}PasswordLineEdit::~PasswordLineEdit(){}//屏蔽输入框全选、复制、粘贴功能void PasswordLineEdit::keyPressEvent(QKeyEvent *event){ if(event->matches(QKeySequence::SelectAll) || event->matches(QKeySequence::Copy) || event->matches(QKeySequence::Paste)) { return; } QLineEdit::keyPressEvent(event);}//鼠标位于密码框中时不可移动void PasswordLineEdit::mouseMoveEvent(QMouseEvent *event){ Q_UNUSED(event);}//鼠标位于密码框中时不可移动void PasswordLineEdit::mouseDoubleClickEvent(QMouseEvent *event){ Q_UNUSED(event);}
2.通过事件过滤器去实现上述的功能
QLineEdit *pFilterLineEdit = new QLineEdit(this);pFilterLineEdit->installEventFilter(new EventFilter(this));pFilterLineEdit->setEchoMode(QLineEdit::Password);pFilterLineEdit->setPlaceholderText(QStringLiteral("密码由字母、数字、下划线组成,长度8-16位"));pFilterLineEdit->setContextMenuPolicy(Qt::NoContextMenu);pFilterLineEdit->setMaxLength(16);
class EventFilter : public QObject{public: explicit EventFilter(QObject *parent = 0); ~EventFilter();protected: virtual bool eventFilter(QObject *obj, QEvent *event);};
EventFilter::EventFilter(QObject *parent) : QObject(parent){}EventFilter::~EventFilter(){}bool EventFilter::eventFilter(QObject *obj, QEvent *event){ QLineEdit *pLineEdit = qobject_cast<QLineEdit *>(obj); if (pLineEdit != NULL) { switch (event->type()) { case QEvent::MouseMove: case QEvent::MouseButtonDblClick: return true; case QEvent::KeyPress: { QKeyEvent *pKeyEvent = static_cast<QKeyEvent*>(event); if(pKeyEvent->matches(QKeySequence::SelectAll) || pKeyEvent->matches(QKeySequence::Copy) || pKeyEvent->matches(QKeySequence::Paste)) { return true; } } } } return QObject::eventFilter(obj, event);}
上面就是三种关于密码框的一些操作,基本也够用了!
2 0
- 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】
- Qt之密码框不可选中、复制、粘贴、无右键菜单等
- Qt 密码框不可选中、复制、粘贴、无右键菜单等
- Qt之密码框不可全选、复制、粘贴无右键菜单等
- Qt之密码框不可全选、复制、粘贴无右键菜单等
- Qt之密码框不可全选、复制、粘贴无右键菜单等
- 屏蔽选中、粘贴、复制、剪切、右键菜单
- js屏蔽浏览器右键菜单,粘贴,复制,剪切,选中
- xshell4 选中复制,右键粘贴
- xshell软件选中复制、右键粘贴
- 禁止另存网页、屏蔽选中、粘贴、复制、剪切、右键菜单程序代码
- silverlight:向TextBox添加右键菜单,菜单包括复制、粘贴、剪切、选择全部等四项功能!
- 实现密码框、文本框不能复制、粘贴、剪切和右键
- wpf中的默认右键菜单中的复制、粘贴、剪贴等没有本地化的解决方案
- jquery实现密码和确认密码的输入框中不能复制,粘贴,剪切,和右键
- SAP选中后即为复制,右键是粘贴,…
- XShell5设置左键选中复制,右键粘贴
- UltraWebGrid右键菜单在Excel上复制粘贴
- 对从事IT的一些想法和憧憬
- 如何设计一个三极管放大电路
- 9.3.3
- ZCMU-Jolly Jumpers
- Retrofit 源码分析
- Qt 密码框不可选中、复制、粘贴、无右键菜单等
- 关于家里两个路由器进行级联时配置
- shell命令笔记
- Qt:5.8新特性,qmlc使用以及效果
- 优雅编程之Trove集合工具类的7点整理学习分享(四十)
- 前端构建系统 Gulp 的使用与常用插件推荐 - 上篇
- docker高级应用之智能添加与修改防火墙规则
- Mac下快速安装Emacs
- FineReport 集成到web项目