我正在使用PyQt4
QLineEdit
小部件来接受密码。有setMasking
属性,但不遵循如何设置屏蔽字符。
答案 0 :(得分:16)
editor = QLineEdit()
editor.setEchoMode(QLineEdit.Password)
答案 1 :(得分:8)
PyQt4或Qt4中setMasking
没有QLineEdit
属性。你在谈论setInputMask()
吗?如果你是,这不会做你认为它做的事情。它设置验证输入的掩码。
要使控件隐藏键入的内容,请使用setEchoMode()
方法,该方法将(应该)显示平台的标准密码隐藏字符。从我在文档中看到的内容来看,如果要显示自定义字符,则需要派生一个新类。但总的来说,这是一个坏主意,因为它违背了用户期望的内容。
答案 2 :(得分:3)
使用Qt非常简单:只要查询QStyle :: SH_LineEdit_PasswordCharacter常量,就需要定义一个新样式并从styleHint方法返回新字符。以下是一个例子:
class LineEditStyle : public QProxyStyle
{
public:
LineEditStyle(QStyle *style = 0) : QProxyStyle(style) { }
int styleHint(StyleHint hint, const QStyleOption * option = 0,
const QWidget * widget = 0, QStyleHintReturn * returnData = 0 ) const
{
if (hint==QStyle::SH_LineEdit_PasswordCharacter)
return '%';
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
lineEdit->setEchoMode(QLineEdit::Password);
lineEdit->setStyle(new LineEditStyle(ui->lineEdit->style()));
现在问题是pyqt似乎对QProxyStyle一无所知;它似乎没有被包裹在那里,所以你被卡住了,除非你想自己包装它。
问候
答案 3 :(得分:2)
正如文档所说http://doc-snapshot.qt-project.org/4.8/stylesheet-examples.html#customizing-qlineedit:
可以使用以下方式设置具有QLineEdit :: Password echo模式的行编辑的密码字符:
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
答案 4 :(得分:1)
选择行编辑,然后在“属性编辑器” 窗口中,会有一个属性echoMode
,您可以将其设置为Password
。
在这种情况下,反地球的答案将起作用:
myLineEdit.setEchoMode(QLineEdit.Password)