Qt自定义密码框,先显示后隐藏

本文介绍如何在Qt中创建一个自定义的密码输入框,实现输入时字符先显示一段时间再自动隐藏成星号的功能。通过重载QLineEdit类并连接cursorPositionChanged和textEdited信号的槽函数,结合定时器实现这一效果。当输入或删除字符时,全局变量mLineEditText保存或更新实际密码,然后在特定时间间隔后用星号替换显示。这种设计兼顾了用户确认输入和保护密码的安全性。
摘要由CSDN通过智能技术生成

        现在很多应用在密码输入时,会先显示一段时间,大概几百毫秒,然后再变成星号或者圆点隐藏起来。这样做的好处是,可以让密码输入者看到自己输入的字符,同时又防止密码被偷窥。但是Qt自带的密码输入框,要么输入时立即变成圆点,要么全部输入完后再一起变成圆点。

       要实现先显示后隐藏的效果其实很简单,只需重载QLineEdit类,然后在连接光标位置变化信号(cursorPositionChanged)和文本编辑信号(textEdited)的槽中做相应的处理。这两个信号对应的槽函数如下所示。

void QPasswordLineEdit::slotTextEdited(const QString& text)
{
    if(text.count()>mLastCharCount)//输入
    {
        mLineEditText.append(text.right(1));
    }
    else if(text.count()<mLastCharCount)//删除
    {
        mLineEditText.remove(mLineEditText.count()-1,1);
    }
    mLastCharCount = mLineEditText.count();
}

        当文本框的字符串长度大于之前保存的字符串的长度,说明正在输入,并将输入的这一个字符保存到全局变量mLi

PyQt6 是 PyQt 的最新版本,它是一个用于创建图形用户界面 (GUI) 应用程序的强大工具包。PyQt6 兼容 Python 和 Qt 库,并提供了一个丰富的库供开发者构建复杂的应用程序。 为了在一个 PyQt6 的输入里设置密码显示隐藏功能,可以使用 `QLineEdit` 类,并结合自定义函数来改变文本显示模式。下面是一种实现这个功能的方法: 1. **导入必要的模块**: ```python from PyQt6.QtWidgets import QApplication, QLineEdit, QPushButton, QVBoxLayout, QWidget import sys ``` 2. **创建一个窗口并添加组件**: ```python class PasswordInputExample(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() # 创建一个密码输入 self.password_input = QLineEdit() self.password_input.setEchoMode(QLineEdit.EchoMode.Password) self.password_input.textChanged.connect(self.onTextChanged) # 创建一个按钮控制显示/隐藏密码的功能 show_button = QPushButton('显示') show_button.clicked.connect(self.toggle_password_visibility) layout.addWidget(self.password_input) layout.addWidget(show_button) self.setLayout(layout) def onTextChanged(self, text): """ 这个函数会在输入的内容变化时触发 """ pass def toggle_password_visibility(self): """ 切换密码输入显示模式 """ if self.password_input.echoMode() == QLineEdit.EchoMode.Password: self.password_input.setEchoMode(QLineEdit.EchoMode.Normal) else: self.password_input.setEchoMode(QLineEdit.EchoMode.Password) ``` 3. **运行应用程序**: ```python if __name__ == '__main__': app = QApplication(sys.argv) ex = PasswordInputExample() ex.show() sys.exit(app.exec()) ``` 在这个例子中,我们首创建了一个 `QLineEdit` 对象,并将它的 `echoMode()` 设置为 `Password` 模式,这意味着默认状态下输入的内容将以星号表示。当按下 "显示" 按钮时,`toggle_password_visibility` 函数会检查当前的 `echoMode()` 并相应地更改其值。如果当前显示模式是 `Password`,则更改为 `Normal`,反之亦然,实现了密码显示隐藏的功能。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值