怎样做一个密码输入框?
#include "widget.h"
#include "ui_widget.h"
#include <QLineEdit>
#include <QEvent>
#include <QKeyEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->passwordBox2->setContextMenuPolicy(Qt::NoContextMenu);//干掉该部件的右键菜单
ui->passwordBox2->setPlaceholderText(trUtf8("请输入密码"));//设置无输入时的提示信息
ui->passwordBox2->setMaxLength(16);//设置最大输入长度
ui->passwordBox2->setEchoMode(QLineEdit::PasswordEchoOnEdit);//设置密码显示模式,该模式为输入结束后隐藏字符串
ui->passwordBox2->installEventFilter(this);//调用事件过滤器
}
Widget::~Widget()
{
delete ui;
}
bool Widget::eventFilter(QObject *obj,QEvent *event)
{
//将Line Edit部件转化为一个将要事件过滤的对象
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 (Qt::Key_1 == pKeyEvent->key())
{
return true;
}
//过滤掉全选、复制、、剪切、粘贴、取消、重做命令
if(pKeyEvent->matches(QKeySequence::SelectAll)||
pKeyEvent->matches(QKeySequence::Copy)||
pKeyEvent->matches(QKeySequence::Cut)||
pKeyEvent->matches(QKeySequence::Paste)||
pKeyEvent->matches(QKeySequence::Undo) ||
pKeyEvent->matches(QKeySequence::Redo))
{
return true;
}
}
}
}
return QObject::eventFilter(obj, event);
}